在 python 中搜索目录时如何允许多个文件名?
How to allow for multiple file names when searching through a directory in python?
我怎样才能这样写:
module_path = os.path.join(root_dir,_dir,'Tests.py')
是否也可以考虑名为 Test.py 和 test.py 以及 tests.py 的文件?
如果找不到文件 Tests.py,它如何检查两个文件中的另一个以确保编写该程序的人能够看到他们的文件?
我想说的是有什么东西可以让我这样做吗?:
module_path = os.path.join(root_dir,_dir,'(T or t)est(s).py')
如果您要搜索的确实是这四个文件,那么类似以下的内容将起作用:
import os
_dir = 'test'
names=['Test.py','test.py','Tests.py','tests.py']
for fname in names:
test_path = os.path.join(_dir, fname)
if os.path.isfile(test_path):
module_path = test_path
break
您需要进行修改以适应您的环境。
您可以使用 glob
module,它支持 简单 版本的正则表达式 ("Unix-style wildcards")。例如,您可以使用:
for name in glob.glob("[tT]est*.py"):
print("I found", name)
这会匹配名称 以 "Test" 或 "test" 开头并以 .py
结尾的文件。它不会按偏好顺序为您提供名称,但它可能就是您所需要的全部。
我怎样才能这样写:
module_path = os.path.join(root_dir,_dir,'Tests.py')
是否也可以考虑名为 Test.py 和 test.py 以及 tests.py 的文件?
如果找不到文件 Tests.py,它如何检查两个文件中的另一个以确保编写该程序的人能够看到他们的文件?
我想说的是有什么东西可以让我这样做吗?:
module_path = os.path.join(root_dir,_dir,'(T or t)est(s).py')
如果您要搜索的确实是这四个文件,那么类似以下的内容将起作用:
import os
_dir = 'test'
names=['Test.py','test.py','Tests.py','tests.py']
for fname in names:
test_path = os.path.join(_dir, fname)
if os.path.isfile(test_path):
module_path = test_path
break
您需要进行修改以适应您的环境。
您可以使用 glob
module,它支持 简单 版本的正则表达式 ("Unix-style wildcards")。例如,您可以使用:
for name in glob.glob("[tT]est*.py"):
print("I found", name)
这会匹配名称 以 "Test" 或 "test" 开头并以 .py
结尾的文件。它不会按偏好顺序为您提供名称,但它可能就是您所需要的全部。