[英]write lines of file in another file in python
我想在output1_file
从input_file
写入行,但是当我运行程序时,它不会将第一行写入输出文件。
import csv
from statistics import mean
from typing import TextIO
def calculate_averages(input_file_name, output_file_name):
with (open(input_file_name, 'r')) as fin:
line=fin.readline()
while line:
line = fin.readline()
with open (output_file_name,'a') as f:
f.write((line.strip()))
f.write('\n')
f.close()
line = fin.readline()
return f
calculate_averages('input.csv', 'output1.csv')
而我的input_file是:
mandana,5,7,3,15
hamid,3,9,4,20,9,1,8,16,0,5,2,4,7,2,1
sina,19,10,19,6,8,14,3
sara,0,5,20,14
soheila,13,2,5,1,3,10,12,4,13,17,7,7
ali,1,9
sarvin,0,16,16,13,19,2,17,8
但我的output1_file是:
hamid,3,9,4,20,9,1,8,16,0,5,2,4,7,2,1
sina,19,10,19,6,8,14,3
sara,0,5,20,14
soheila,13,2,5,1,3,10,12,4,13,17,7,7
ali,1,9
sarvin,0,16,16,13,19,2,17,8
第一行丢失。
价值line
在第一line=fin.readline()
被下覆盖line=fin.readline()
之前,它被写入到输出文件。
您应该使用for
循环将文件对象作为迭代器进行迭代:
def calculate_averages(input_file_name, output_file_name):
with open(input_file_name, 'r') as fin, open(output_file_name,'a') as f:
for line in fin:
f.write(line.strip() + '\n')
因为您在第一次写入之前两次调用readline
。
一些技巧:
1,使用with
语句打开文件时,无需使用f.close()
。
2,无需返回f
。
下面是我重构的代码。
import csv
from statistics import mean
from typing import TextIO
def calculate_averages(input_file_name, output_file_name):
with open(input_file_name, 'r') as fin:
line = fin.readline()
with open(output_file_name, 'a') as f:
while line:
f.write((line.strip()))
f.write('\n')
line = fin.readline()
calculate_averages('input.csv', 'output1.csv')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.