Скрипт на Python для чтения файла и печати при наличии или отсутствии интересующей строки

#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. Извините, я пропустил еще одну проблему с кодом, но сейчас я обновил свой ответ, и он должен сработать.