У меня есть текстовый файл, который хранит информацию о заказе в следующем формате. Я пытаюсь выполнить поиск по первой строке блока, которые представляют идентификатор и печатать 7 следующих строк. Но мой код проверяет только первую строку или печатает все строки, содержащие номер ввода. Может ли кто-нибудь мне помочь?Python: поиск конкретной строки в файле
4735
['Total price: ', 1425.0]
['Type of menu: ', 'BBQ']
['Type of service: ', ' ']
['Amount of customers: ', 25.0]
['Discount: ', '5%', '= RM', 75.0]
['Time: ', '2017-01-08 21:39:19']
3647
['Total price: ', 2000.0]
['Type of menu: ', ' ']
['Type of service: ', 'Tent ']
['Amount of customers: ', 0]
.......
Я использую следующий код для поиска в текстовом файле.
try:
f = open('Bills.txt', 'r')
f.close()
except IOError:
absent_input = (raw_input("|----File was not founded----|\n|----Press 'Enter' to continue...----|\n"))
report_module = ReportModule()
report_module.show_report()
Id_input = (raw_input("Enter ID of order\n"))
with open("Bills.txt", "r") as f:
searchlines = f.readlines()
j = len(searchlines) - 1
for i, line in enumerate(searchlines):
if Id_input in str(line): # I also try to check in this way (Id_input == str(line)), but it didn't work
k = min(i + 7, j)
for l in searchlines[i:k]: print l,
print
else:
absent_input = (raw_input("|----Order was not founded----|\n|----Press 'Enter' to continue...----|\n"))
report_module = ReportModule()
report_module.show_report()
Почему вы открываете файл дважды, первый открытый не нужен, вместо этого включайте свою логику в блок try. –
, как вы можете видеть в блоке 'except', он проверяет, существует ли файл. @Bogdan: используйте https://docs.python.org/2/library/os.path.html#os.path.exists или https://docs.python.org/2/library/os.path.html# os.path.isfile его гораздо более чистый – BloodyD
он все еще может использовать предложение except. но открытие файла дважды для одной задачи не требуется. –