1

ファイル内の 12 行ごとに選択し、それらの行を新しいファイルに書き込みたいと考えています。誰にも提案がありますか?私は 126 行あり、最初の 6 行はヘッダーなので、ファイルの終わりに達するまで 7 行目、19 行目、31 行目などを選択する必要があります。選択された 10 行ごとに新しいファイルが作成されます。

コードの書き方 1 つのファイルを書くことができます。たとえば、P_1 は 10 行 (12 行ごと) 7,19,31...,109 で構成されています。したがって、最初のファイルは 7 行目から始まる P_1 であり、P_2 は 8 行目から始まります。ループして 7 から 8 などに進み、最終的に 18 行目に到達するにはどうすればよいですか?

新しい 12 個のファイルを書き込むために for i を範囲内に含めます (それは機能しますか?)。

for i in range (1,12): with open('output%i.txt' %i,'w+') as g: 行を変更して正しいファイルに対応させる方法がわかりません。私が何を意味するか知っていますか?

再度、感謝します!

4

4 に答える 4

6

大きなファイルがある場合は、ファイル全体をメモリにロードしないため、この方法が適しています。(for line in f.readlines()そうなるように)

from itertools import islice #used to get the 7th, 19th, etc... lines
import fileinput #to iterate over lines without loading whole file into memoru

with open('output.txt','w+') as g:
    for line in islice(fileinput.input('file.txt'),6,None,12): #start at 6 because iterable 0-indexed, that is the 7th element has index 6
        g.write(line)

OR(@Elazarが指摘した方法)

with open('output.txt', 'w') as g, open('file.txt') as f:
    for line in islice(f,6,None,12):
        g.write(line)
于 2013-05-14T01:54:35.497 に答える
0
# creating the file as a base for me, you don't need this part
with open('dan.txt','w') as f:
    f.write('\n'.join(str(i) for i in xrange(1,127)))



# your desired code
with open('dan.txt') as g:
    li = g.readlines()

for i in xrange(6,19):
    with open('P_%d.txt' % (i-5),'w') as f:
        f.writelines(li[x] for x in xrange(i,126,12))
于 2013-05-14T23:36:34.200 に答える