Почему код ниже останавливается после «перерыва»?Если я вставлю оператор print после 'break', он напечатает (например, print "done!").Почему бы не запустить с открытым .. после «перерыва»?каждый из них работает отдельно (в виде отдельных файлов .py).
diskDetails = open("diskDetails.txt", "r")
data = open("data.txt", "w")
searchlines = diskDetails.readlines()
for i, line in enumerate(searchlines):
if "Failed" in line:
for l in searchlines[i-3:i+25]: print >> data, l
print
break
with open('data.txt') as infile, open('dataFinal.txt', 'w') as outfile:
for line in infile:
if line.startswith(("ID", "State", "Capacity", "Product ID", "----")):
outfile.write(line)
Файл dataFinal.txt является пустым, поэтому после «перерыва» он останавливается.Не прерывает ли просто остановка цикла «если»?Почему он сделает печать "Готово!"но не 'with open (' data.txt ') .... part?
diskDetails.txt содержит несколько записей, каждая длиной 27 строк (я сократил для этого примера):
ID : 0:1:6
Status : Non-Critical
Name : Physical Disk 0:1:6
State : Failed
Power Status : Spun Up
Bus Protocol : SAS
Media : HDD
Part of Cache Pool : Not Applicable
Remaining Rated Write Endurance : Not Applicable
Failure Predicted : Yes
Revision : ES66
Driver Version : Not Applicable
Model Number : Not Applicable
T10 PI Capable : No
Certified : Yes
Первая часть кода получает запись, которая содержит 'Failed' (находит ошибку), возвращает 2 строки выше (i-3) и 25 ниже (i + 25) и выводит ее в файлс именем 'data.txt'.
Вторая часть кода (с открытым ...) берет этот файл data.txt, ищет определенные строки (содержащие идентификатор, состояние, емкость и т. д.) и печатает его вфайл с именем dataFinal.txt
cat dataFinal.txt
ID : 0:1:6
State : Failed
Capacity : 558.38 GB (599550590976 bytes)
Product ID : ST3600057SS
Эти две части кода работают нормально независимо (как показано выше). Как я могу заставить их работать вместе в одном файле .py? Спасибо!