2017-11-16 8 views
-7

私は7000行以上のテキストファイルがあるコードを書く必要があります。私は10行ごとに分割し、別のファイルに書き込む必要があります。pythonを使ってtxtファイルから10行ごとにピックする方法は?

+2

可能な重複 - https://stackoverflow.com/a/41937429/4098013 –

+1

なぜそれをするPythonスクリプトを書くのか? https://linux.die.net/man/1/splitを見てください。 –

答えて

0
with open(fname) as f: 
    content = f.readlines() 
    with open(fname) as g: 
     len_f = len(content) 
     for x in xrange(0, len_f): 
      if x % 10 = 0: 
       g.write(content[x]) 
       g.write("\n") #For new-line 
      else: 
       pass 
     g.close() 
    f.close() 

(Pythonの2.xの)

キーテイク遠かっ:

1)がオープン/各ラインを書き込んだ後、書き込み、ファイルを閉じないでください。

2)完了時にファイルを閉じます。その後、

1

オープンファイル、出力ファイルにすべての10行目を書いて入力行を反復処理:スコープが終了すると

with open(in_name, 'r') as f: 
    with open(out_name, 'w') as g: 
     count = 0 
     for line in f: 
      if count % 10 == 0: 
       g.write(line) 
      count += 1 

open()context managerは、ファイルを閉じます。

出力が決定されたのは、スライスf.readlines()[::10] を使用することができたからです。ファイルが大きい場合は、itertools isliceジェネレータが適切かもしれません。

from itertools import islice 

with open(in_name, 'r') as f: 
    with open(out_name, 'w') as g: 
     g.writelines(islice(f, 0, None, 10)): 

私は10行ごとに書きたいと思っています。ファイルの10個のチャンクを含むたくさんのファイルを書きたい場合は、入力ファイルが使い尽くされるまでループする必要があります。これは、重複として示されている質問と同じではありません。チャンクがファイルの最後を読み取ると、その応答は中断されます。

from itertools import islice, count 

out_name = 'chunk_{}.txt' 

with open(in_name) as f: 
    for c in count(): 
     chunk = list(islice(f, 10)) 
     if not chunk: 
      break 
     with open(out_name.format(c)) as g: 
      g.writelines(chunk) 
関連する問題