我试图从一个非常大的文本文件(10Gb)中提取行。文本文件包含工程软件的输出(不是CSV文件)。我想从第1行复制到包含字符串“stop”的第一行,然后从包含“restart”的第一行继续到文件的结尾。你知道吗
下面的代码可以工作,但速度相当慢(大约一分钟)。有没有更好的方法用熊猫来做呢?我试过read\u csv函数,但没有要输入的分隔符。你知道吗
file_to_copy = r"C:\Users\joedoe\Desktop\C ANSYS R1\PATCHED\modes.txt"
output = r"C:\Users\joedoe\Desktop\C ANSYS R1\PATCHED\modes_extract.txt"
stop = '***** EIGENVECTOR (MODE SHAPE) SOLUTION *****'
restart = '***** PARTICIPATION FACTOR CALCULATION ***** X DIRECTION'
with open(file_to_copy) as f:
orig = f.readlines()
newf = open(output, "w")
write = True
first_time = True
for line in orig:
if first_time == True:
if stop in line:
first_time = False
write = False
for i in range(300):
newf.write(
'\n -------------------- MIDDLE OF THE FILE -------------------')
newf.write('\n\n')
if restart in line: write = True
if write: newf.write(line)
newf.close()
print('Done.')
readlines
遍历整个文件。然后迭代readlines
的结果。我认为下面的编辑将通过这个大文件为您保存一个完整的迭代。你知道吗您应该使用python生成器。打印也会使过程变慢。你知道吗
下面是使用生成器的几个示例:
Python generator to read large CSV file
Lazy Method for Reading Big File in Python?
相关问题 更多 >
编程相关推荐