以不同的顺序高效地将输入文件重写为输出文件列表



下面是我尝试做的事情的基本情况。

取以下包含数字的文件,例如:

开始文件

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()

相关内容

  • 没有找到相关文章

最新更新