我使用python,我需要一个在所有驱动器中搜索我的文件的函数或库,我在Windows中只提供文件名为 F3 ,搜索计算机中的所有文件夹。 windows os,本地驱动器,我写了一个代码
import os
import win32api
paths = 'D:/'
def dir_list_folder(paths):
for folderName in os.listdir(paths):
if (folderName.find('.') == -1):
folderPath = os.path.join(paths,folderName );
dir_list_folder(folderPath);
else:
print ('Files is :'+ folderName );
它给了我一个好的结果但是有些类型给我一个错误,如果我不需要搜索.Zip或.RAR文件我怎么能这样做
答案 0 :(得分:8)
在Windows上,您最好使用 os.walk 功能。 os.walk返回一个递归遍历源树的生成器。下面的示例显示了正则表达式搜索。
import os
import re
import win32api
def find_file(root_folder, rex):
for root,dirs,files in os.walk(root_folder):
for f in files:
result = rex.search(f)
if result:
print os.path.join(root, f)
break # if you want to find only one
def find_file_in_all_drives(file_name):
#create a regular expression for the file
rex = re.compile(file_name)
for drive in win32api.GetLogicalDriveStrings().split('\000')[:-1]:
find_file( drive, rex )
find_file_in_all_drivers( 'myfile\.doc' )
一些注意事项:
答案 1 :(得分:2)
import os
az = lambda: (chr(i)+":\\" for i in range(ord("A"), ord("Z") + 1))
for drv in az():
for root, dirs, files in os.walk(drv):
process_the_stuff()
答案 2 :(得分:1)
您需要为c驱动器指定驱动器。
def findall(directory):
files=os.listdir(directory)
for fl in files:
path=os.path.join(directory,fl)
if os.path.isdir(path):
findall(path)
else:
dosomethingwithfile(path)
return
基本上你遍历文件树。您必须以root目录将驱动器传递给此方法。例如。的findall( 'C:/')