首页 > 解决方案 > 用于读取文件并打印是否存在感兴趣行的 Python 脚本

问题描述

我编写了一个简单的 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。谢谢!

标签: python-3.x

解决方案


读取第一个文件时,您的代码会在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')

推荐阅读