我正在嘗試創建一個程序,該程序將單獨列表中的相應值相加,並用計算的總和編寫一個新文件。例如,我有infile_1.txt
10項,infile_2.txt
也有10項。我們的目標是從infile_1.txt
中獲取第一個數字,將其添加到第一個數字infile_2
並創建一個新的文本文件,其中包含兩個數字的和。這兩個文件與我的程序位於同一文件夾中,因此Python可以識別它們並將新文件打印到該文件夾中。我使用的代碼如下:無法獲得總和以在outfile中打印
def sumen():
outfile = input("Name the output file: ")
myfile_1 = open("infile_1.txt",'r')
myfile_2 = open("infile_2.txt",'r')
outputfile = open(outfile, 'w')
for line in myfile_1:
readfile1 = myfile_1.readline()
readfile2 = myfile_2.readline()
totalenergy = myfile_1[0:] + myfile_2[0:]
print(totalenergy,file=outputfile)
myfile_1.close()
myfile_2.close()
outputfile.close()
sumen()
當我運行它,它讓我選擇outfile中(totalenergy.txt
),然後結束。我檢查了Python創建的文件,並且沒有寫入任何內容。
目前,我遇到的錯誤 「totalenergy = myfile_1 [0:] + myfile_2 [0:] 類型錯誤: '_io.TextIOWrapper' 對象未標化的」。我還遇到一個屬性錯誤,這與關閉infiles和outfile有關,它說「'str'沒有屬性'關閉'」
另外一個問題:如果兩個文件不同長度,是否可以重寫for循環來解決長度差異?我想知道的另一件事是,如果行totalenergy = myfile_1[0:] + myfile_2[0:]
在Python每次連續迭代期間抓取每個列表中下一個值的意義上都是正確的。
我是相對較新的python,所以任何幫助將不勝感激。謝謝。
另請注意,根據Python版本,混合迭代和顯式調用'.readline()'是不安全的,並且不一定會正常工作。只需循環(隱式地使用循環或通過'next(myfile_1)'顯式地),不要調用'.readline()'。 – ShadowRanger
@ShadowRanger當它們是不同的文件時它真的不安全嗎? – Barmar
啊,錯過了兩個不同的文件,這是安全的。當然,'對於readfile1,zip(myfile_1,myfile_2)中的readfile2:'將會以更直接的方式完成並行迭代。 – ShadowRanger