python - 如何在输出文件中返回输入文件的每个第 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')
解决方案
您的代码甚至无法读取输入文件的内容。如果你的文件不是很大,你会遇到内存问题,你可以这样做。打开第一个文件并将所有行读入一个列表,其中每个条目都是一个新行。还要尝试使用该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)
推荐阅读
- kotlin - 恢复对象的默认值
- python - 具有两个键和一个值的嵌套字典没有给我正确的输出
- excel - 如果行中的单元格包含日期行中的“新”返回日期
- java - 系统地注释 PDF
- python - 静态文件不会在 django 中更新
- cordova - 如何在 Ionic 3 应用程序中的 Multiview 上显示启动画面
- c# - 如何创建下一个和上一个按钮来导航列表?
- firebase - 当我使用变量时,Firebase 更新查询无限运行
- asp.net-core - 400 Bad Request error with asp .net core hosted with Dokku on DigitalOcean
- gitlab - TortoiseGit 在尝试 lfs 跟踪文件的差异时响应“/usr/bin/sh: git-lfs: command not found”