2016-03-29 6 views
0
file3 = open("over_speeding.txt", "r") 
file5 = open("fine.txt", "r") 
file6 = open("all details.txt", "a") 
x, y = file3.readlines(), file5.readlines() 
if file6 == file6.close(): #this just an argument to get the if loop going 
    print("not working") 

else: 
    num = 0 # the of the file that will be appended 
    file6.write(y[num] + x[num]) 
    num += 1 

file3.close() 
file5.close() 
file6.close() 
file6 = open("all details.txt", "r") 
file66 = file6.read() 
print(file66) 

ここでは、4つの4つのファイルを新しいファイルにマージしようとしています。たとえば、file5の最初の行にfile3の最初の行が追加されます。あるファイルの行を他のファイルの同じ行番号に追加するにはどうすればよいですか?

ifループでファイル6が開いているかどうかを確認したい、これが機能していない、別の引数を表示することができますか?私はループの助けを借りずにファイルに出力しようとしましたが、これは非常に非効率的であり、出力される形式は変更するのが非常に困難です。

ファイルがクローズされていない場合、file3とfile5の行の情報は変数numに応じて追加され、num = 4の場合は停止し、コードは書き込まれません。それは私がどのようにするか分からないからです。

シェルで出力されるエラーは次のとおりです。使用可能性がループ

+0

"if loop"と書くとどういう意味ですか?あなたのコードにループはありません。 – Rose

答えて

2
場合の代わりに、この上のためまたはwhileループを使用する方法を見せている場合

file6.write(y[num] + x[num]) 
ValueError: I/O operation on closed file. 

あなたはこのエラーを修正することができ

これを行う:

from itertools import zip_longest # izip_longest in Python2 

with open("over_speeding.txt") as speeding, open("fine.txt") as fine, open("all details.txt", "a") as everything: 
    for speedline, fineline in zip_longest(speeding, fine, fillvalue=""): 
     everything.write(speedline.strip() + fineline.strip() + "\n") 
+0

ちょうど私の人生を保存しました。私は今3日間それに行ってきました。その安堵。 – User2434

+0

私はこのスニペットをすごく楽しんでいます。ブックマークしました! –

+1

@TheZombro:私は賞賛しています。誰も私の前にそれを言ったことはありません。 – zondo

関連する問題