以不同的顺序有效地将输入文件重写为输出文件列表
Rewriting an input file to an output file list in differing order efficiently
所以这是我正在尝试做的事情的基本外观。
获取以下包含数字的文件,例如:
begin_file
one,1
two,2
three,3
four,4
five,5
然后用之前的总数在每个列表中创建第 3 个项目。然后切换顺序以匹配下面。
final_file
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。
有没有办法让输出文件以这种格式写入?还是我以错误的方式解决了这个问题?感谢大家的帮助!
考虑使用 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)
python 库有 csv 模块来处理这种格式的文件。
如果您确实需要手动处理它,则需要在将其写入文件之前构造一个字符串,使用 ','.join(li[1], li[0], str(total))
或 '%s,%s,%d' % (li[1], li[0], total)
之类的东西;然而,使用 csv 模块通常更好。
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()
所以这是我正在尝试做的事情的基本外观。
获取以下包含数字的文件,例如:
begin_file
one,1
two,2
three,3
four,4
five,5
然后用之前的总数在每个列表中创建第 3 个项目。然后切换顺序以匹配下面。
final_file
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。
有没有办法让输出文件以这种格式写入?还是我以错误的方式解决了这个问题?感谢大家的帮助!
考虑使用 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)
python 库有 csv 模块来处理这种格式的文件。
如果您确实需要手动处理它,则需要在将其写入文件之前构造一个字符串,使用 ','.join(li[1], li[0], str(total))
或 '%s,%s,%d' % (li[1], li[0], total)
之类的东西;然而,使用 csv 模块通常更好。
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()