gpt4 book ai didi

python - 使用 Python 在 Linux 和 Windows 中查找文件的最快方法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:35:34 26 4
gpt4 key购买 nike

我正在用 Python 为 RawTherapee 编写一个插件。我需要从一个名为“AboutThisBuild.txt”的文件中提取版本号,该文件可能存在于目录树中的任何位置。尽管 RawTherapee 知道它的安装位置,但此数据已烘焙到二进制文件中。

我的插件被设计为在没有任何命令行参数的情况下运行时收集基本系统数据,以进行短路故障排除。通过版本号、修订号和变更集(又名 Mercurial),我可以找出脚本可能无法按预期工作的原因。好的,这就是上下文。

我尝试了多种方法,其中一些是在本网站的其他地方推荐的。主要的是使用 os.walk 和 fnmatch。

问题是速度。搜索整个目录树就像看油漆干了一样!

为了减少负载,我尝试预测可能的隐藏位置并只遍历这些位置。这样速度更快,但明显的缺点是会丢失一些文件。

这就是我目前的情况。已在 Linux 上测试,但尚未在 Windows 上测试,因为我仍在研究文件可能放置的位置。

import fnmatch
import os
import sys

rootPath = ('/usr/share/doc/rawtherapee',
'~',
'/media/CoreData/opt/',
'/opt')
pattern = 'AboutThisBuild.txt'

# Return the first instance of RT found in the paths searched
for CheckPath in rootPath:
print("\n")
print(">>>>>>>>>>>>> " + CheckPath)
print("\n")
for root, dirs, files in os.walk(CheckPath, True, None, False):
for filename in fnmatch.filter(files, pattern):
print( os.path.join(root, filename))
break

通常“AboutThisBuild.txt”存储在名为“rawtherapee”的目录/子目录中,或者在目录树中的某处有字符串。尽管我天真地获得了 5000 个奇数目录名称并在其中搜索“rawtherapee”,然后使用 os.walk 遍历这些目录,但我查看过的所有模块和函数都会(再次)整理目录中的所有文件。

有人有更快的方法来搜索整个目录树,还是我坚持使用这个混合选项?

最佳答案

我是 Python 的初学者,但我想我知道在 Windows 中查找文件的最简单方法。

import os
for dirpath, subdirs, filenames in os.walk('The directory you wanna search the file in'):
if 'name of your file with extension' in filenames:
print(dirpath)

此代码将在控制台中打印出您要搜索的文件的目录。您所要做的就是进入目录。

关于python - 使用 Python 在 Linux 和 Windows 中查找文件的最快方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19828837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com