我有一个文本输入文件:
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')
最佳答案
您的代码甚至无法读取输入文件的内容。如果你的文件不是很大,你会遇到内存问题,你可以这样做。打开第一个文件并将所有行读入列表,其中每个条目都是一个新行。
也尝试使用 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)
https://stackoverflow.com/questions/65354039/