我正在尝试创建一个程序,该程序将单独列表中的相应值相加,并用计算的总和编写一个新文件。例如,我有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