正在搜索" aborted"目录中的文件

时间:2015-10-22 11:51:00

标签: python regex

我的代码在目录中搜索*.lis个文件并搜索aborted - *.lis个文件。

这是我的代码:

def aborted_files(file):
    in_file = open(file,'r')
    for lines in in_file.readlines():
        if re.search("aborted", lines):
            print in_file

    in_file.close()

for file in os.listdir("./"):
    if file.endswith(".lis"):
        aborted_files(file)

我在2个文件lisfile1.lislisfile2.lis中对其进行测试。

lisfile1.lis我有aborted,我的代码的结果是:

<open file 'lisfile1.lis', mode 'r' at 0x2b0edd174660>
<open file 'lisfile1.lis', mode 'r' at 0x2b0edd174660>

您能否帮助我仅获得aborted - *.lis个文件名 我的代码中有什么不对?

2 个答案:

答案 0 :(得分:1)

  1. 如果您要打印文件名,可以打印出file.name变量。

  2. 然后,您在这里不需要re.search()功能,只需使用in

  3. 使用return返回文件名将比使用print更好。

    但是,如果您在此处使用打印,则会打印文件名n次(n是该文件中的aborted个数。)

  4. .readlines()这里也没用。

  5. 使用with自动关闭文件会更简单,更安全。

  6. def aborted_files(file):
        with open(file, 'r') as in_file:
            for lines in in_file:
                if "aborted" in lines:
                    return in_file.name
    
    for file in os.listdir("./"):
        if file.endswith(".lis"):
            print aborted_files(file)
    

答案 1 :(得分:1)

这里有两件事。

(1)您为每场比赛打印文件。我猜测>= 1是否有'aborted'次出现,您可能只想打印一次文件名。 (2)您打印出实际的文件对象,而不是文件名。您还可以使用with open(...)来处理为您关闭文件。

def aborted_files(file):
    with open(file, 'r') as in_file:
        for lines in in_file.readlines():
            if re.search("aborted", lines):
                print in_file.name
                return