首页 > 解决方案 > 如何在输出文件中返回输入文件的每个第 k 个元素?

问题描述

我有一个文本输入文件:

AAA
BBB
CCC
DDD
EEE
FFF,FFF
GGG

我想将此文件的每一 k 行复制到一个输出文本文件中。例如,对于 k=2,它将是:

BBB
DDD
FFF FFF

因为k = 3它应该是

CCC
FFF FFF

这是我到目前为止所做的,我正在努力寻找如何在函数中识别 K。请你帮助我好吗?

def ex1 (filen1, filen2, k):
    fp1=open(filen1,'r') #open file to read from
    fp2=open(filen2,'a') #open file to write to
    
    count=1 #number of lines which have been copied
    
    for line in fp1:
        line = next(str(filen1))
        list.append(line.strip())
        fp1.readline
    return list     
fp1.close
fp2.close    
ex1('Input file.txt', 'Output.txt')

标签: python

解决方案


您的代码甚至无法读取输入文件的内容。如果你的文件不是很大,你会遇到内存问题,你可以这样做。打开第一个文件并将所有行读入一个列表,其中每个条目都是一个新行。还要尝试使用该with语句打开文件,因为它会再次自动关闭文件(通常这是更好的做法)。

然后您只需执行相反的操作并将行写入另一个文件,但是您只需索引行列表,以便它从第 k-1 个元素开始并且只包含每个第 k 个元素。

k = 2

with open(filen1, 'r') as input_file:
    lines = input_file.readlines()

with open(filen2, 'w') as output_file:
    for line in lines[k-1::k]:
        output_file.write(line)

推荐阅读