根据输入参数查找特定目录的有效方法?
Efficient way of finding a specific directory based on input parameters?
给定两个参数,123
和 abc
,我可以唯一标识以下形式的目录:
\path\to\unique_123\directory_abc
但是、"unique" 和"directory" 会因文件夹而异。我想创建一个函数 func(123, abc)
returns \path\to\unique_123\directory_abc
.
有没有比使用 os.walk
更有效的方法来完成这个?
如果您想查看文件夹中有哪些目录,请使用:
os.listdir("/path/to/folder")
使用它,您可以获得子文件夹的名称。
如果您在其中看到 unique_123
之类的文件夹,您可以在字符串上使用 `rstrip("1234567890") 去除文件夹名称末尾的数字,假设文件夹名称以结尾在数字中,你需要替换它们。
可能你想要:
import glob
matches = glob.glob('**/*_%s/*_%s' % ('123', 'abc'), recursive=True)
assert len(matches) == 1
print(matches[0])
但是如果你真的不需要它,请避免recursive
,它通常会很慢!如果你真的 需要它,我可能会 shell 到 find(1)
,后者更擅长这种事情。
给定两个参数,123
和 abc
,我可以唯一标识以下形式的目录:
\path\to\unique_123\directory_abc
但是、"unique" 和"directory" 会因文件夹而异。我想创建一个函数 func(123, abc)
returns \path\to\unique_123\directory_abc
.
有没有比使用 os.walk
更有效的方法来完成这个?
如果您想查看文件夹中有哪些目录,请使用:
os.listdir("/path/to/folder")
使用它,您可以获得子文件夹的名称。
如果您在其中看到 unique_123
之类的文件夹,您可以在字符串上使用 `rstrip("1234567890") 去除文件夹名称末尾的数字,假设文件夹名称以结尾在数字中,你需要替换它们。
可能你想要:
import glob
matches = glob.glob('**/*_%s/*_%s' % ('123', 'abc'), recursive=True)
assert len(matches) == 1
print(matches[0])
但是如果你真的不需要它,请避免recursive
,它通常会很慢!如果你真的 需要它,我可能会 shell 到 find(1)
,后者更擅长这种事情。