5

196 個のリストを含むファイルがあり、新しい 196 個の出力ファイルを作成し、各リストを新しいファイルに書き込みたいので、それぞれに入力データのリストが 1 つ含まれる 196 個の出力ファイルが作成されます。入力ファイルは次のとおりです。 :

"['128,129', '116,118', '108,104', '137,141', '157,144', '134,148', '138,114', '131,138', '248,207', '208,247', '246,248', '101,106', '131,115', '119,120', '131,126', '138,137', '132,129']"
"['154,135', '151,147', '236,244', '243,238', '127,127', '125,126', '122,124', '123,126', '127,129', '122,121', '147,134', '126,132', '128,137', '233,222', '222,236', '125,126']"

.....たとえば、ここでは 2 つのリストしか指定していませんが、合計 196 のリストが存在します。出力は次のようになります。

ファイル 1 :

128,129
116,118
108,104

ファイル 2 :

154,135
151,147
236.244

現在のコード:

fn = open("/home/vidula/Desktop/project/ori_tri/inpt.data","r")
fnew = fn.read()
fs = fnew.split('\n')
for value in fs:
    f = [open("/home/vidula/Desktop/project/ori_tri/input_%i.data" %i,'w') for i in range(len(list_of_files))]
    f.write(value)
    f.close()

エラー: リストに書き込み属性がありません。

4

5 に答える 5

10

現在のコードはすべてをメモリにロードしていますが、これはまったく不要であり、適切でない場所にリストを作成しているため、エラーが発生します。これを試して:

fn = open("/home/vidula/Desktop/project/ori_tri/inpt.data","r")
for i, line in enumerate(fn):
    f = open("/home/vidula/Desktop/project/ori_tri/input_%i.data" %i,'w')
    f.write(line)
    f.close()

これにより、各ファイルに各行がそのまま書き込まれます。インデックス作成に使用した列挙関数を調べてください。

これを行った後も、各行を一連の行に変換する解析ロジックを記述する必要があります...元のコードには実際にはロジックがなかったので、ここではそれを行いません。

于 2012-12-10T10:41:30.260 に答える
1

あなたの f はファイルのリストです。ループする必要があります:

for file in f:
   file.write(value)
于 2012-12-10T10:37:58.230 に答える
0

196 個のファイルを読み取り、データを (何らかの変更を加えた後に) 新しい 196 個のファイルに書き込みたいと想定しています。maps と reduce (関数型プログラミング) を使用すると、必要なことができます。質問にはあまり説明がありませんが、私はあまり役に立ちません。

def modify(someString):
    pass # do processing

def newfiles(oldfilename): return '%s.new.txt'%(oldfilename) # or something 

filenames = ('a', 'b', 'c', 'd', ....) 
handles = [(open(x, 'r'), open(newfile(x), 'w')) for x in filenames] # not using generator
tmp = [y[1].write(modify(y[0].read())) for y in handles) 
于 2012-12-10T10:37:34.080 に答える
0

これがあなたが探しているものだと思います:

with open("/home/vidula/Desktop/project/ori_tri/inpt.data","r") as fn:
    listLines = fn.readlines()

for fileNumber, line in enumerate(listLines):
    with open("/home/vidula/Desktop/project/ori_tri/input{0}.data".format(fileNumber), "w") as fileOutput:
        fileOutput.write(line)
于 2012-12-10T10:45:22.880 に答える