1

所以,我有以下应用程序......

我有一个文件夹,上面有一万多个文件夹。每个文件夹都是一个作业,它们都具有相同的格式:

“十位数字”+_+“工作名称”

像这样:

“1234567890_Stackoverflow”

如何仅使用前 10 位数字找到该文件夹​​的全名?

这是我的 Python 代码:path我当前的工作目录在哪里,job是我想要找到的十位数字

for dirs in os.listdir(path):
    if fnmatch.fnmatch(dirs, job+"*"):
        job_name = dirs
        break

job_path=path+'\\'+job_name
print(job_path)

使用此代码,我可以找到工作的全名,但无论我要求哪个工作,总是需要 23 秒才能找到它。

有没有更快的方法找到它?

我的意思是,如果我手动进入作业的文件夹,我可以在 4-5 秒内搜索文件夹,但手动搜索。

4

2 回答 2

1

这是您可以使用的方法glob.glob()

from glob import glob

path = 'C:\\Users\\User\\Desktop\\Folder'
ten_digits = '1234567890'
for file in glob(f"{path}\\{ten_digits}_*"):
    print(file)
于 2020-07-04T23:29:13.413 回答
0

也许操作系统更快,您可以尝试:

import subprocess
number = 54932034857
dirname = subprocess.run([f"ls -d {number}*"], 
    stdout=subprocess.PIPE,
    shell=True).stdout.decode("utf-8").split("\n")[0]
 print(dirname) 

如果你在 Windows 上,可能你可以使用dir而不是。ls

于 2020-07-05T00:12:20.800 回答