回答編集履歴

2

コメントを受け追記

2020/09/08 00:48

投稿

bsdfan
bsdfan

スコア4794

test CHANGED
@@ -21,3 +21,41 @@
21
21
  outputs = out.getvalue()
22
22
 
23
23
  ```
24
+
25
+
26
+
27
+ ### 追記
28
+
29
+ 今回のケースでは`io.StringIO`とかは使えないんですね・・・
30
+
31
+
32
+
33
+ 元のプログラムで気になったところとしては、`sys.stdout`からreadするのではなく、`TemporaryFile`をいったん別変数に代入しておいて、そこからreadしたほうがいいのではないかというところと、readの前にseek(0)が必要ではないかというところです。
34
+
35
+
36
+
37
+ (`contextlib.redirect_stdout`という便利な関数があるようです)
38
+
39
+
40
+
41
+ ```python
42
+
43
+ from contextlib
44
+
45
+ from tempfile
46
+
47
+
48
+
49
+ with tempfile.TemporaryFile(mode='w+b') as tmp:
50
+
51
+ with contextlib.redirect_stdout(tmp):
52
+
53
+ dll = cdll.LoadLibrary('hogehoge.dll')
54
+
55
+ tmp.seek(0)
56
+
57
+ for line in iter(tmp.readline, b''):
58
+
59
+ logger.info(line.rstrip().decode(cnf.Proc_Encoding, 'replace'))
60
+
61
+ ```

1

コード修正

2020/09/08 00:48

投稿

bsdfan
bsdfan

スコア4794

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```python
6
6
 
7
- import os
7
+ import io
8
8
 
9
9
  import sys
10
10