从 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-1000
从 file1.dat
到 file1000.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
也支持递归搜索。
我正在寻找一个 python 脚本,它将在当前目录中找到一个现有文件的确切文件名,这个 python 脚本将从中 运行,这可能是递增命名。
例如文件可以是:
file1.dat
file2.dat
file3.dat
....
所以我们知道文件名以前缀 file
开头,我们知道它以后缀 .dat
.
但我们不知道它是 file1.dat
还是 file1000.dat
或介于两者之间。
所以我需要一个脚本来检查 1-1000
从 file1.dat
到 file1000.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
也支持递归搜索。