1
i = 1 # keep track of file number
directory = '/some/directory/'


for i in range(1, 5170): #number of files in directory
    filename = directory + 'D' + str(i) + '.txt'
    input = open(filename)
    output = open('output.txt', 'w')
    input.readline() #ignore first line
    for g in range(0, 7): #write next seven lines to output.txt
        output.write(input.readline())

    output.write('\n') #add newline to avoid mess
    output.close()
    input.close()
    i = i + 1

私はこのコードを持っていて、1 つのファイルを取得して output.txt に書き直そうとしていますが、次のファイルを添付するときに、私のコードは添付されている古いファイルを上書きします。その結果、コードが完成すると、次のようなものがあります。

dataA[5169]=26
dataB[5169]=0
dataC[5169]=y
dataD[5169]='something'
dataE[5169]=x
data_date[5169]=2012.06.02

ファイル0から5169までの範囲のデータの代わりに。それを修正する方法はありますか?

4

2 に答える 2

8

おそらくfor ループのoutput.txt close(およびその後)に開きたいと思うでしょう。output.txt書かれているように、ファイルを開くたびに上書きします。(別の方法は、追加のために開くことです: output = open('output.txt','a')、しかし、それはここでそれを行うための最良の方法ではありません...

もちろん、最近ではコンテキスト マネージャー (withステートメント)を使用することをお勧めします。

i = 1 # keep track of file number <-- This line is useless in the code you posted
directory = '/some/directory/'  #<-- os.path.join is better for this stuff.
with open('output.txt','w') as output:

    for i in range(1, 5170): #number of files in directory
        filename = directory + 'D' + str(i) + '.txt'
        with open(filename) as input:

            input.readline() #ignore first line
            for g in range(0, 7): #write next seven lines to output.txt
                output.write(input.readline())

            output.write('\n') #add newline to avoid mess
        i = i + 1   #<---also useless line in the code you posted
于 2012-10-25T13:20:49.437 に答える
2

あなたの問題は、書き込みモードで開くことです。使用するファイルに追加するには、append を使用します。ここを参照してください。

于 2012-10-25T13:22:20.637 に答える