我正在尝试创建一个脚本,合并目录中的所有文件,然后删除输出文件中不需要的行。我要删除的行包含相同的字符串模式,我想删除除第一行之外的所有行(这也是文件中的第一行)。下面是我要做的:
import glob
# Merge all output files into one file
read_files = glob.glob('/home/user/Results/Script_tests/TestResults/*.output')
with open('MergedOutput.txt', 'r+b') as outfile:
for file in read_files:
with open(file, 'r+b') as infile:
outfile.write(infile.read())
print 'Files merged.'
# Remove header rows except from row 1
final_output = open('FinalMergedOutput.txt', 'r+b')
with open('MergedOutput.txt', 'r+b') as file:
for line in file:
if line == 0 and line.startswith('File'):
final_output.write(line)
elif line > 0 and not line.startswith('File'):
final_output.write(line)
print 'Headers removed except on line 1.'
合并部分工作得很好,只是有些行似乎被复制到FinalMergedOutput.txt
。但是,删除行将删除以File
开头的所有行,并且不保留第一行。。。在
有没有人有一个优雅的解决办法?在
line == 0
将不起作用。line
是一个包含该行文本的字符串,因此它永远不会为零。相反,继续跟踪行号,例如使用enumerate
:您还可以简化检查:
^{pr2}$首先,打开文件:
接下来,从文件中获取所有行:
^{pr2}$现在可以关闭文件:
并以写入模式重新打开:
然后,写回你的行,除了你想删除的那一行。您可能需要将“\n”更改为文件结尾使用的任何行。在
最后,再次关闭文件。在
你可以一个接一个地附加文件。学习Python Pandas库。在
for line in file
迭代文件的实际内容,而不是行号。{e>当第一个条件为偶数时,{e>永远不会大于第二个条件。在对于列表中第一项的特殊处理,有许多到的习惯用法,这是一个非常直接的习惯用法,只需对代码进行最小的调整:
相关问题 更多 >
编程相关推荐