gpt4 book ai didi

python - 使用 Python 搜索文件系统

转载 作者:太空宇宙 更新时间:2023-11-04 03:42:11 25 4
gpt4 key购买 nike

自从过去 2 周以来,我一直在使用 Python 进行编码,而且对它还很陌生。

我编写了一段代码来模拟“查找”命令在 *NIX 系统中的工作方式。对于不太深的目录,我的代码可以正常工作,但是如果我从“根”目录开始搜索,它会花费太多时间并且处理器会升温 :D 另一方面,使用“查找”cmd 大约需要 8 秒。

嘿,我知道我现在对 Python 有点菜鸟,但任何试图提高搜索效率的提示都将不胜感激。

这是我写的:

 #!/usr/bin/python3

import os

class srchx:
file_names = []
is_prohibit = False

def show_result(self):
if(self.is_prohibit):
print("some directories were denied read-access")
print("\nsearch returned {0} result(s)".format(len(self.file_names)))
for _file in self.file_names:
print(_file)

def read_dir(self, cur_dir, srch_name, level):
try:
listing = os.listdir(cur_dir)
except:
self.is_prohibit = True
return
dir_list = []
#print("-"*level+cur_dir)
for entry in listing:
if(os.path.isdir(cur_dir+"/"+entry)):
dir_list.append(entry)
else:
if(srch_name == entry):
self.file_names.append(cur_dir+"/"+entry)
for _dir in dir_list:
new_dir = cur_dir + "/" + _dir
self.read_dir(new_dir, srch_name, level+1)
if(level == 0):
self.show_result()

def __init__(self, dir_name=os.getcwd()):
srch_name = ""
while(len(srch_name) == 0):
srch_name = input("search for: ")
self.read_dir(dir_name, srch_name, 0)




def main():
srch = srchx()

if (__name__ == "__main__"):
main()

看一看,请帮我解决这个问题。

最佳答案

有一个名为 os.walk() 的内置目录浏览框架,但即使 os.walk() 也很慢,如果你想更快地浏览,你需要访问操作系统文件浏览器。

https://pypi.python.org/pypi/scandir

scandir 是一种解决方案。

关于python - 使用 Python 搜索文件系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25832933/

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