teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

2018/07/01 15:36

投稿

rainrain
rainrain

スコア31

title CHANGED
File without changes
body CHANGED
@@ -1,78 +1,1 @@
1
- ###プログラム
2
- n行2列の入力ファイルを読み込んで、欲しいデータを選択して並び替え、新たにcsvファイルに出力するプログラムです。
3
-
4
- import numpy as np
5
- import sys
6
- from sys import argv
7
-
8
- if len(sys.argv) < 5:
9
- sys.exit()
10
-
11
- input_file = sys.argv[1]   #入力ファイル
12
- output_file = sys.argv[2]   #出力ファイル
13
- m = int(sys.argv[3]) #出力するデータの範囲指定するめの値
1
+ printの内容をcsv形式でファイルに出力する方法教えていだきたいです。
14
- n = int(sys.argv[4])     # 同上
15
-
16
- data1 = np.loadtxt(input_file, delimiter=",", usecols=[0])
17
- data2 = np.loadtxt(input_file, delimiter=",", usecols=[1])
18
-
19
- (中略)
20
-
21
- f=open("output_file","w")    #コマンドラインでoutput_fileを読み込んでいる
22
-
23
- for i in range(start,count-t2):
24
-
25
-
26
- g += 1
27
- x=data1[g]      # ・・・a
28
- print(*x, sep=', ',end='',file=f)  #ここが分からない
29
-
30
- (中略)
31
-
32
- for j in range(row,high):
33
-
34
- row = int(row)+1
35
- y = data2[row]   # ・・・b
36
- print(*y, sep=', ',end='',file=f)  #ここがわからない
37
-
38
- start = start + 1
39
- print()
40
-
41
- f.close()
42
-
43
- ###教えていただきたいこと
44
-
45
- 上記のプログラムのaとbの部分を、1つのcsvファイルに書き出す方法を教えていただきたいです。ファイル出力しようとせずに、端末で実行してみたところ、やりたいことは実現できているのですが、ファイルへの書き出しができなくて困っています。
46
- ファイルへの書き出し方法は、fopenでなくてもなんでもよいです。
47
- また、書き出しは「改行なし」で行いたいです。
48
-
49
- ちなみにこのプログラムを実行すると、
50
- print(*x, sep=', ',end='',file=f)
51
- の「*」が引っかかって動きません。
52
- 「*」を消すと実行はできますが、何も表示されません。
53
-
54
- ###理想の出力ファイル
55
- 入力ファイルはn行2列のcsvファイルです。このプログラムは、aの部分で入力ファイルの1列目から値を1つ取ってきて、bの部分で2列目から複数の値をとってくるようになっています。
56
-
57
- 例)
58
- 1週目のループで、aで3を取ってきて、bで1,2,3,4,5を取ってきたとすると、出力ファイルの1行目に、
59
-
60
- 3,1,2,3,4,5
61
-
62
- と並ぶのが理想です。
63
- 2週目のループで、aで4、bで2,3,4,5,6を取ってきたとすると、
64
-
65
- 3,1,2,3,4,5
66
- 4,2,3,4,5,6
67
-
68
-
69
-
70
-
71
- と続いていきます。
72
-
73
- ###print以外に試してみたこと
74
- fopenを消し、2つのprintの部分を、
75
- sys.stdout.write((str)(x)+ ", ")
76
-
77
- sys.stdout.write((str)(y)+ ", ")
78
- でやってみました。これを端末で実行すると理想通りの形になりましたが、ファイルに出力させる方法が分かりませんでした。また、入力ファイルの値は、1.32345のように小数点以下まであるのですが、このやり方では整数に直されてしまうので、そこも上手くいきませんでした。