2017-09-24 19 views
1

「n」の「.txt」ファイルをフォルダに入れて、同時に開いて、ループ内の各ファイルのすべての最初の行を読み込み、2行目ごとに読み込みたい。複数のファイルのすべての行を同時に読む

私のファイルは次のように書かれています:

0 
1 
0 
1 
1 
0 
0 
0 

私が使用した

file = fileinput.input(files=("text_{}.txt".format(i))) 
for line in file: 
    for ch in line: 
     print file.readline() 

おかげ

+0

質問は何ですか? – wwii

+0

どうすればいいですか? – amintou

+1

[チュートリアル](https://docs.python.org/3/tutorial/index.html#the-python-tutorial)を参考にして作業を進めてください。最終的には、あなたの問題を解決するためのアイデアが得られます。それらのアイディアのいくつかを試してみてください。あなたが立ち往生した場合、周りを探索して、誰かがその問題を解決したかどうかを見てください。あなたが自分で解決できないことについて尋ねて戻ってくると – wwii

答えて

1

あなたは、メモリ内のすべてのファイルの内容を読みたくない場合は、

FILES = ['1.txt', '2.txt', '3.txt'] 

if __name__ == '__main__': 
    file_handles = {filename: open(filename, 'r') for filename in FILES} 
    while file_handles: 
     for filename, file in file_handles.items(): 
      line = next(file, None) 
      if line is not None: 
       line = line.rstrip('\n') 
       print(line) 
      else: 
       file.close() 
       file_handles.pop(filename) 
1

Yをouは複数のファイルを一度に開くことができ、簡単に配列に格納して反復して 'readline'を実行することができます。開いているすべてのファイルを閉じることを覚えておくことは重要です。なぜなら、「with」ステートメントを使用して閉じることが習慣になるからです(この特定のシナリオでは実用的ではありません)。コード例:

filenames = ["File1.txt", "File2.txt"] 
file_objs = [] 

for name in filenames: 
    file_objs.append(open(name, "r")) 

while file_objs: 
    for file in file_objs: 
     line = file.readline() 
     if not line: 
      file_objs.pop(file_objs.index(file)).close() 
     else: 
      ... 
関連する問題