簡體   English   中英

在python中的另一個文件中寫入文件行

[英]write lines of file in another file in python

我想在output1_fileinput_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM