从 python 中的部分文件名中查找文件

Find a file from a partial filename in python

我正在寻找一个 python 脚本,它将在当前目录中找到一个现有文件的确切文件名,这个 python 脚本将从中 运行,这可能是递增命名。

例如文件可以是: file1.dat file2.dat file3.dat ....

所以我们知道文件名以前缀 file 开头,我们知道它以后缀 .dat.

结尾

但我们不知道它是 file1.dat 还是 file1000.dat 或介于两者之间。

所以我需要一个脚本来检查 1-1000file1.datfile1000.dat 的所有文件名,如果它找到目录中确实存在的文件,它 returns 一条成功消息。

试试这个:

for i in range(1, 1001):
    if os.path.isfile("file{0}.dat".format(i)):
        print("Success!")
        break
else:
    print("Failure!")

尝试这样的事情:

import os

path = os.path.dirname(os.path.realpath(__file__))

for f_name in os.listdir(path):
    if f_name.startswith('file') and f_name.endswith('.dat'):
        print('found a match')

正如其他人在评论中建议的那样,可以使用 glob 和其他选项,但是,我个人觉得 listdir 更舒服。

import os
for file in os.listdir("/DIRECTORY"):
    if file.endswith(".dat") and prefix in file:
        print file

我会使用 Python 的 glob 模块使用正则表达式进行搜索。这是一个示例表达式:

glob.glob(r'^file(\d+)\.dat$')

这将匹配以 file 开头,后跟任何数字,并以 .dat 结尾的文件名。要更深入地了解此正则表达式的工作原理,请查看 Regex101,您也可以在那里进行测试。

注意:您的问题没有具体说明,但作为奖励,glob 也支持递归搜索。