回答編集履歴

2

追記

2018/07/01 06:17

投稿

tachikoma
tachikoma

スコア3601

test CHANGED
@@ -1,3 +1,7 @@
1
+ プログラムの中で・・・という条件からは外れますが、標準出力からのリダイレクトを使う方法を下記に示します。
2
+
3
+
4
+
1
5
  標準出力の内容をファイルに出力したいようなので、ここでは端末の仕組みを使うことを考えてはいかがでしょうか。具体的には、書き出したい内容をすべて標準出力に書き出します。printをそのまま使うだけです(デフォルトで標準出力に書き出すため)。
2
6
 
3
7
 

1

方法を変更。

2018/07/01 06:17

投稿

tachikoma
tachikoma

スコア3601

test CHANGED
@@ -1,23 +1,37 @@
1
- やりたいことは標準出力のリダレクト気がするので、正直Python外側の話のようにいます。下記のように2回printを呼べばれぞれに書き出せます。
1
+ 標準出力の内容をファルに出力したいようなので、ここでは端末仕組みを使ことを考えてはいかがでしょうか。具体的は、書き出した内容をすべて標準出力に書き出します。printをそのまま使うだけです(デフォルトで標準出力に書き出すため)
2
2
 
3
3
 
4
4
 
5
-
5
+ sample.py
6
6
 
7
7
  ```python
8
8
 
9
- f=open(output_file,"w")
9
+ print(gaze, sep=',',end='')
10
+
11
+ ```
10
12
 
11
13
 
12
14
 
13
- print(gaze, sep=',',end='',file=f)
15
+ としておいて、端末側で実行してみます。
14
16
 
15
17
 
16
18
 
19
+ ```bash
20
+
21
+ python sample.py
22
+
23
+ ```
24
+
17
- print(gaze, sep=',',end='',file=sys.stdout)
25
+ こうすると、端末に結果が表示されると思います。この結果をファイルにリダイレクトします。
18
26
 
19
27
 
20
28
 
21
- f.close()
29
+ ```bash
30
+
31
+ python sample.py > result.csv
22
32
 
23
33
  ```
34
+
35
+
36
+
37
+ すると、端末に表示されていた内容を`result.csv`に出力することができます。ファイルに書き込みたくない内容で端末に表示させたい内容は、標準エラー出力(sys.stderr)を使うといいです。