Я пытаюсь извлечь строки из очень большого текстового файла (10 Гб).Текстовый файл содержит выходные данные инженерного программного обеспечения (это не файл CSV).Я хочу скопировать из строки 1 в первую строку, содержащую строку «stop», а затем продолжить с первой строки, содержащей «restart», до конца файла.
Следующий код работает, но он довольно медленный (около минуты).Есть ли лучший способ сделать это с помощью панд?Я пробовал функцию read_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.')