我写了一个python脚本来处理文本文件。输入是一个包含多行的文件。在每一行的开头,都有一个数字 (1, 2, 3... , n)。然后是一个空行和写一些文本的最后一行。
我需要通读这个文件以删除开头的一些行和结尾的一些行(比如数字 1 到 5,然后数字 78 到结尾)。我想将剩余的行写入一个新文件(在一个新目录中)并重新编号写在这些行上的第一个数字(在我的示例中,6 将变为 1、7 2 等)
我写了以下内容:
def treatFiles(oldFile,newFile,firstF, startF, lastF):
% firstF is simply an index
% startF corresponds to the first line I want to keep
% lastF corresponds to the last line I want to keep
numberFToDeleteBeginning = int(startF) - int(firstF)
with open(oldFile) as old, open(newFile, 'w') as new:
countLine = 0
for line in old:
countLine += 1
if countLine <= numberFToDeleteBeginning:
pass
elif countLine > int(lastF) - int(firstF):
pass
elif line.split(',')[0] == '\n':
newLineList = line.split(',')
new.write(line)
else:
newLineList = [str(countLine - numberFToDeleteBeginning)] + line.split(',')
del newLineList[1]
newLine = str(newLineList[0])
for k in range(1, len(newLineList)):
newLine = newLine + ',' + str(newLineList[k])
new.write(newLine)
if __name__ == '__main__':
from sys import argv
import os
os.makedirs('treatedFiles')
new = 'treatedFiles/' + argv[1]
treatFiles(argv[1], argv[2], newFile, argv[3], argv[4], argv[5])
我的代码工作正常,但速度太慢(我有大约 10Gb 的文件需要处理,并且已经运行了几个小时)。
有谁知道我可以如何改进它?