#python-3.x
#python-3.x
Вопрос:
Я написал простой скрипт на Python для чтения строк в разных файлах, которые не начинаются с «#», и печати его. И если нет строки без «#», тогда следует печатать как «Без строк». Между каждой строкой нет пустых строк.
Файл1:
#Name
Raphl
#last
файл2:
#Name
#last
Я хотел бы напечатать строки, в которых есть строки, начинающиеся с ‘#’
f=['file1.txt', 'file2.txt']
l=[]
for files in f:
f1=open(files, 'r')
for lines in f1:
if not lines.startswith('#'):
l.append(lines)
if len(l)>0:
print ("file name:",files)
print ("Interested line:",lines)
if len(l)==0:
print ("file name with empty lines:",'No lines')
Для file1 он печатает, Raphl
но для file2 он не печатается No lines
.
Спасибо!
Ответ №1:
При чтении первого файла ваш код добавляет строку в l
. Затем, при чтении второго файла, l
уже имеет длину 1.
Чтобы исправить это, вам нужно определять l
каждый раз, когда файл считывается.
Обновление: Также вам нужно дождаться, пока программа выполнит цикл по всем строкам. Вы можете сделать это, изменив отступ в инструкции if. Я обновил программу, и теперь она должна работать.
f=['file1.txt', 'file2.txt']
for files in f:
f1=open(files, 'r')
l=[] # Each time a file is read, `l` is reset to an empty list
for line in f1:
if not line.startswith('#'):
l.append(line)
if len(l)>0:
print ("file name:",files)
print ("Interested line:",line)
if len(l)==0:
print ("file name with empty lines:",'No lines')
Комментарии:
1. Спасибо. Но это не решило проблему. При запуске скрипта он по-прежнему не печатает, если len ==0.
2. Извините, я пропустил еще одну проблему с кодом, но сейчас я обновил свой ответ, и он должен сработать.