| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -10,6 +10,7 @@ class Program | |||
| 10 | 10 | static int Main(string[] args) | |
| 11 | 11 | { | |
| 12 | 12 | new TestSysIO().ToConsoleOut(); | |
| 13 | + new TestSysIO().ToNullTextWriter(); | ||
| 13 | 14 | new TestSysIO().ToTextWriter(); | |
| 14 | 15 | //TestMatplotlib.Plot(); | |
| 15 | 16 | //TestMatplotlib.PlotInWindow(); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,4 +1,5 @@ | |||
| 1 | 1 | using Python.Runtime; | |
| 2 | + using System; | ||
| 2 | 3 | using System.IO; | |
| 3 | 4 | ||
| 4 | 5 | namespace Test | |
@@ -7,25 +8,42 @@ class TestSysIO | |||
| 7 | 8 | { | |
| 8 | 9 | public void ToConsoleOut() | |
| 9 | 10 | { | |
| 10 | - // redirect to Console.Out | ||
| 11 | + // redirect to Console.Out, I usually put this at the entrance of a program. | ||
| 11 | 12 | PySysIO.ToConsoleOut(); | |
| 13 | + | ||
| 12 | 14 | //test | |
| 13 | 15 | using (Py.GIL()) | |
| 14 | 16 | { | |
| 15 | - PythonEngine.RunSimpleString("print('hello pythonnet!')"); | ||
| 17 | + PythonEngine.RunSimpleString("print('hello ConsoleOut!')"); | ||
| 18 | + } | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | + public void ToNullTextWriter() | ||
| 22 | + { | ||
| 23 | + // redirect to a TextWriter | ||
| 24 | + PySysIO.ToTextWriter(); | ||
| 25 | + | ||
| 26 | + //test | ||
| 27 | + using (Py.GIL()) | ||
| 28 | + { | ||
| 29 | + PythonEngine.RunSimpleString("print('hello NullTextWriter!')"); | ||
| 16 | 30 | } | |
| 17 | 31 | } | |
| 18 | 32 | ||
| 19 | 33 | public void ToTextWriter() | |
| 20 | 34 | { | |
| 21 | 35 | // redirect to a TextWriter | |
| 22 | - var writer = new StringWriter(); | ||
| 23 | - PySysIO.ToTextWriter(writer); | ||
| 36 | + PySysIO.ToTextWriter(new StringWriter()); | ||
| 37 | + | ||
| 38 | + //test | ||
| 24 | 39 | using (Py.GIL()) | |
| 25 | 40 | { | |
| 26 | - PythonEngine.RunSimpleString("print('hello pythonnet!')"); | ||
| 41 | + PythonEngine.RunSimpleString("print('hello TextWriter!')"); | ||
| 27 | 42 | } | |
| 43 | + | ||
| 44 | + var writer = PySysIO.TextWriter as StringWriter; | ||
| 28 | 45 | var content = writer.GetStringBuilder().ToString(); | |
| 46 | + Console.WriteLine(content); | ||
| 29 | 47 | } | |
| 30 | 48 | } | |
| 31 | 49 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -29,14 +29,19 @@ def close(self): | |||
| 29 | 29 | ||
| 30 | 30 | private static SysIOWriter SysIOStream = new SysIOWriter(); | |
| 31 | 31 | ||
| 32 | + public static TextWriter TextWriter | ||
| 33 | + { | ||
| 34 | + get | ||
| 35 | + { | ||
| 36 | + return SysIOStream.TextWriter; | ||
| 37 | + } | ||
| 38 | + } | ||
| 39 | + | ||
| 32 | 40 | public static TextWriter ToTextWriter(TextWriter writer = null) | |
| 33 | 41 | { | |
| 34 | 42 | using (Py.GIL()) | |
| 35 | 43 | { | |
| 36 | - if(writer != null) | ||
| 37 | - { | ||
| 38 | - SysIOStream.TextWriter = writer; | ||
| 39 | - } | ||
| 44 | + SysIOStream.TextWriter = writer; | ||
| 40 | 45 | dynamic sys = Py.Import("sys"); | |
| 41 | 46 | sys.stdout = sys.stderr = SysIOStream; | |
| 42 | 47 | } | |
@@ -54,62 +59,48 @@ public static void Flush() | |||
| 54 | 59 | /// </summary> | |
| 55 | 60 | public class SysIOWriter | |
| 56 | 61 | { | |
| 62 | + private TextWriter _TextWriter; | ||
| 57 | 63 | public TextWriter TextWriter | |
| 58 | 64 | { | |
| 59 | - get; | ||
| 60 | - internal set; | ||
| 65 | + get | ||
| 66 | + { | ||
| 67 | + return _TextWriter == null ? Console.Out : _TextWriter; | ||
| 68 | + } | ||
| 69 | + set | ||
| 70 | + { | ||
| 71 | + _TextWriter = value; | ||
| 72 | + } | ||
| 61 | 73 | } | |
| 62 | 74 | ||
| 63 | 75 | public SysIOWriter(TextWriter writer = null) | |
| 64 | 76 | { | |
| 65 | - TextWriter = writer; | ||
| 77 | + this._TextWriter = writer; | ||
| 66 | 78 | } | |
| 67 | 79 | ||
| 68 | 80 | public void write(String str) | |
| 69 | 81 | { | |
| 70 | - str = str.Replace("\n", Environment.NewLine); | ||
| 71 | - if (TextWriter != null) | ||
| 72 | - { | ||
| 73 | - TextWriter.Write(str); | ||
| 74 | - } | ||
| 75 | - else | ||
| 76 | - { | ||
| 77 | - Console.Out.Write(str); | ||
| 78 | - } | ||
| 82 | + //str = str.Replace("\n", Environment.NewLine); | ||
| 83 | + this.TextWriter.Write(str); | ||
| 79 | 84 | } | |
| 80 | 85 | ||
| 81 | 86 | public void writelines(String[] str) | |
| 82 | 87 | { | |
| 83 | 88 | foreach (String line in str) | |
| 84 | 89 | { | |
| 85 | - if (TextWriter != null) | ||
| 86 | - { | ||
| 87 | - TextWriter.Write(str); | ||
| 88 | - } | ||
| 89 | - else | ||
| 90 | - { | ||
| 91 | - Console.Out.Write(str); | ||
| 92 | - } | ||
| 90 | + this.write(line); | ||
| 93 | 91 | } | |
| 94 | 92 | } | |
| 95 | 93 | ||
| 96 | 94 | public void flush() | |
| 97 | 95 | { | |
| 98 | - if (TextWriter != null) | ||
| 99 | - { | ||
| 100 | - TextWriter.Flush(); | ||
| 101 | - } | ||
| 102 | - else | ||
| 103 | - { | ||
| 104 | - Console.Out.Flush(); | ||
| 105 | - } | ||
| 96 | + this.TextWriter.Flush(); | ||
| 106 | 97 | } | |
| 107 | 98 | ||
| 108 | 99 | public void close() | |
| 109 | 100 | { | |
| 110 | - if (TextWriter != null) | ||
| 101 | + if (this._TextWriter != null) | ||
| 111 | 102 | { | |
| 112 | - TextWriter.Close(); | ||
| 103 | + this._TextWriter.Close(); | ||
| 113 | 104 | } | |
| 114 | 105 | } | |
| 115 | 106 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments