下面是我尝试做的事情的基本情况。
取以下包含数字的文件,例如:
开始文件
one,1
two,2
three,3
four,4
five,5
然后在每个列表中创建第三个项目,其中包含之前的总数。然后切换顺序以匹配以下内容。
最终文件
1,one,1
2,two,3
3,three,6
4,four,10
5,five,15
我如何将数据写入输出文件,如下所示,以下是我所拥有的:
begin_file = open('in.dat', 'r')
final_file = open('out.dat', 'w')
total = 0
for line in begin_file:
line = line.rstrip('n')
if len(line) > 0:
li = line.split(',')
total += int(li[1])
final_file.write(li[1], li[0], str(total))
begin_file.close()
final_file.close()
因此,引发的异常是write((或writelines((只接受一个参数,我给出3。
有没有办法让输出文件以这种格式写入?还是我处理这个问题的方式不对?谢谢大家的帮助!
python库有csv模块,用于处理这种格式的文件。
如果您确实需要手动处理它,那么在将它写入文件之前,您需要构造一个字符串,使用类似','.join(li[1], li[0], str(total))
或'%s,%s,%d' % (li[1], li[0], total)
的东西;但是,使用csv模块通常会更好。
考虑使用with
语句打开输入和输出流。这样可以确保在完成它们时(当with
块结束时(正确地关闭它们。
您可以使用print
语句的file
参数打印到文件:
with open('in.dat') as begin_file, open('out.dat', 'w') as final_file:
total = 0
for line in begin_file:
line = line.rstrip('n')
if line:py
li = line.split(',')
total += int(li[1])
print(li[1], li[0], total, file=final_file)
begin_file = open('in.dat', 'r')
final_file = open('out.dat', 'w')
total = 0
for line in begin_file:
line = line.rstrip('n')
if len(line) > 0:
li = line.split(',')
total += int(li[1])
combined = [li[1], li[0], str(total)]
complete = ', '.join(combined)
final_file.write(complete + 'n')
begin_file.close()
print(final_file)
final_file.close()