无法在outfile中打印总和

时间:2017-06-03 00:28:49

标签: python file loops sum output

我正在尝试创建一个程序,该程序将在单独的列表中对相应的值求和,并使用计算的总和写入一个新文件。例如,我有infile_1.txt有10个项目,infile_2.txt也有10个项目。目标是从infile_1.txt获取第一个数字,将其添加到第一个数字infile_2并创建一个包含两个数字之和的新文本文件。这两个文件与我的程序位于同一文件夹中,因此Python识别它们并将新文件打印到该文件夹​​。我正在使用的代码如下:

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:] TypeError:' _io.TextIOWrapper'对象不可订阅"。我还遇到了一个属性错误,它与关闭infiles和outfile有关。 ' STR'没有属性'关闭' "

另外一个问题:如果这两个文件的长度不同,是否可以重写for循环来解释长度的差异?我想知道的另一件事是,如果在每次连续迭代期间Python抓取每个列表中的下一个值,行totalenergy = myfile_1[0:] + myfile_2[0:]是否正确。

我在python上比较新,所以任何帮助都会非常感激。感谢。

1 个答案:

答案 0 :(得分:1)

执行for line in myfile_1:时会读取文件,因此myfile_1.readline()会获取 next 行。你不需要第二个陈述。

此外,readfile1readfile2也是字符串。如果要将它们添加为整数,则需要调用int()进行转换。

for readfile1 in myfile_1:
    readfile2 = myfile_2.readline()
    totalenergy = int(readfile1) + int(readfile2)
    print(totalenergy,file=outputfile)

有关编写此循环的其他方法,请参阅How to cleanly loop over two files in parallel in Python