如何解决Python3-从多个文件计算并保存到新文件
我有两个文件:
data1.txt
First Second
1 2
3 4
5 6
...
data2.txt
First Second
6 4
3 9
4 1
...
我想将第一个文件中的每个数字添加到第二个文件中的数字。并将输出保存到第三个文件。
因此结果将是:
sum.txt
Sum
7 6
6 13
9 7
....
到目前为止,我有此代码(无法正常工作)
with open('data1.txt') as f1,open('data2.txt') as f2,open('sum.txt','w') as f_out:
f_out.write(f'Sum1 Sum2\n')
header = next(f1)
c1,c2 = header.strip().split(' ')
header = next(f2)
c1,c2 = header.strip().split(' ')
for line in f1:
line = line.strip()
num1,num2 = line.split(' ')
num1,num2 = int(num1),int(num2)
for line in f2:
line = line.strip()
num1,int(num2)
sum1 = f1(num1) + f2(num1)
sum2 = f1(num2) + f2(num2)
f_out.write(f'{sum1} {sum2}\n')
解决方法
您需要同时迭代两个文件。如果您依次访问第一个文件和第二个文件,则不会同时看到file1中的数字和file2中的相应数字,因此无法添加它们。
source .zshrc
请注意,如果两个输入文件的行数不同,则此行为可能会或可能不会符合您的预期。解决该行为以更适合您的需求的一种方法是使用while循环,并在循环内部手动调用with open('data1.txt','r') as f1,open('data2.txt','r') as f2,open('sum.txt','w') as f_out:
h1,h2 = next(f1),next(f2)
f_out.write(f'Sum1 Sum2\n')
for line1,line2 in zip(f1,f2):
a1,b1 = line1.strip().split()
a2,b2 = line2.strip().split()
f_out.write('{} {}\n'.format(int(a1)+int(a2),int(b1)+int(b2)))
和next(f1)
,用两个next(f2)
块捕获异常。另一种方法是使用zip的某些变体:例如参见Is there a zip-like function that pads to longest length?
您可以使用csv模块打开文件并直接获取列表,而不是在每一行上使用try/except
。 csv模块的文档:https://docs.python.org/3/library/csv.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。