質問編集履歴

1

2018/07/01 15:36

投稿

rainrain
rainrain

スコア31

test CHANGED
File without changes
test CHANGED
@@ -1,155 +1 @@
1
- ###プログラム
2
-
3
- n行2列の入力ファイルを読み込んで、欲しいデータを選択して並び替え、新たにcsvファイルに出力するプログラムです。
4
-
5
-
6
-
7
- import numpy as np
8
-
9
- import sys
10
-
11
- from sys import argv
12
-
13
-
14
-
15
- if len(sys.argv) < 5:
16
-
17
- sys.exit()
18
-
19
-
20
-
21
- input_file = sys.argv[1]   #入力ファイル
22
-
23
- output_file = sys.argv[2]   #出力ファイル
24
-
25
- m = int(sys.argv[3]) #出力するデータの範囲指定るための値
1
+ printの内容をcsv形式でファイルに出力する方法教えていただきたいで
26
-
27
- n = int(sys.argv[4])     # 同上
28
-
29
-
30
-
31
- data1 = np.loadtxt(input_file, delimiter=",", usecols=[0])
32
-
33
- data2 = np.loadtxt(input_file, delimiter=",", usecols=[1])
34
-
35
-
36
-
37
- (中略)
38
-
39
-
40
-
41
- f=open("output_file","w")    #コマンドラインでoutput_fileを読み込んでいる
42
-
43
-
44
-
45
- for i in range(start,count-t2):
46
-
47
-
48
-
49
-
50
-
51
- g += 1
52
-
53
- x=data1[g]      # ・・・a
54
-
55
- print(*x, sep=', ',end='',file=f)  #ここが分からない
56
-
57
-
58
-
59
- (中略)
60
-
61
-
62
-
63
- for j in range(row,high):
64
-
65
-
66
-
67
- row = int(row)+1
68
-
69
- y = data2[row]   # ・・・b
70
-
71
- print(*y, sep=', ',end='',file=f)  #ここがわからない
72
-
73
-
74
-
75
- start = start + 1
76
-
77
- print()
78
-
79
-
80
-
81
- f.close()
82
-
83
-
84
-
85
- ###教えていただきたいこと
86
-
87
-
88
-
89
- 上記のプログラムのaとbの部分を、1つのcsvファイルに書き出す方法を教えていただきたいです。ファイル出力しようとせずに、端末で実行してみたところ、やりたいことは実現できているのですが、ファイルへの書き出しができなくて困っています。
90
-
91
- ファイルへの書き出し方法は、fopenでなくてもなんでもよいです。
92
-
93
- また、書き出しは「改行なし」で行いたいです。
94
-
95
-
96
-
97
- ちなみにこのプログラムを実行すると、
98
-
99
- print(*x, sep=', ',end='',file=f)
100
-
101
- の「*」が引っかかって動きません。
102
-
103
- 「*」を消すと実行はできますが、何も表示されません。
104
-
105
-
106
-
107
- ###理想の出力ファイル
108
-
109
- 入力ファイルはn行2列のcsvファイルです。このプログラムは、aの部分で入力ファイルの1列目から値を1つ取ってきて、bの部分で2列目から複数の値をとってくるようになっています。
110
-
111
-
112
-
113
- 例)
114
-
115
- 1週目のループで、aで3を取ってきて、bで1,2,3,4,5を取ってきたとすると、出力ファイルの1行目に、
116
-
117
-
118
-
119
- 3,1,2,3,4,5
120
-
121
-
122
-
123
- と並ぶのが理想です。
124
-
125
- 2週目のループで、aで4、bで2,3,4,5,6を取ってきたとすると、
126
-
127
-
128
-
129
- 3,1,2,3,4,5
130
-
131
- 4,2,3,4,5,6
132
-
133
-
134
-
135
-
136
-
137
-
138
-
139
-
140
-
141
- と続いていきます。
142
-
143
-
144
-
145
- ###print以外に試してみたこと
146
-
147
- fopenを消し、2つのprintの部分を、
148
-
149
- sys.stdout.write((str)(x)+ ", ")
150
-
151
-
152
-
153
- sys.stdout.write((str)(y)+ ", ")
154
-
155
- でやってみました。これを端末で実行すると理想通りの形になりましたが、ファイルに出力させる方法が分かりませんでした。また、入力ファイルの値は、1.32345のように小数点以下まであるのですが、このやり方では整数に直されてしまうので、そこも上手くいきませんでした。