我还是Python的新手(使用2.6),我只是在文件名可用时尝试对系统进行全系统搜索,并在Windows上返回绝对路径。我搜索并发现了一些像scriptutil.py这样的模块,并查看了os模块,但没有找到任何适合我需要的东西(或者我可能没有正确理解所有内容以将它应用到我需要的东西,因此没有包括任何码)。我将不胜感激任何帮助。
感谢。
答案 0 :(得分:17)
os.walk()函数是这样做的一种方式。
import os
from os.path import join
lookfor = "python.exe"
for root, dirs, files in os.walk('C:\\'):
print "searching", root
if lookfor in files:
print "found: %s" % join(root, lookfor)
break
答案 1 :(得分:4)
您可以从 root 目录开始,并递归地遍历目录结构,查看该文件的每个级别。当然,如果你想搜索你的整个系统,你需要为每个驱动器调用它。
os.path.walk(rootdir,f,arg)
有一个很好的答案
答案 2 :(得分:0)
这样的事情会起作用吗?
import os
import sys
import magic
import time
import fnmatch
class FileInfo(object):
def __init__(self, filepath):
self.depth = filepath.strip('/').count('/')
self.is_file = os.path.isfile(filepath)
self.is_dir = os.path.isdir(filepath)
self.is_link = os.path.islink(filepath)
self.size = os.path.getsize(filepath)
self.meta = magic.from_file(filepath).lower()
self.mime = magic.from_file(filepath, mime=True)
self.filepath = filepath
def match(self, exp):
return fnmatch.fnmatch(self.filepath, exp)
def readfile(self):
if self.is_file:
with open(self.filepath, 'r') as _file:
return _file.read()
def __str__(self):
return str(self.__dict__)
def get_files(root):
for root, dirs, files in os.walk(root):
for directory in dirs:
for filename in directory:
filename = os.path.join(root, filename)
if os.path.isfile(filename) or os.path.isdir(filename):
yield FileInfo(filename)
for filename in files:
filename = os.path.join(root, filename)
if os.path.isfile(filename) or os.path.isdir(filename):
yield FileInfo(filename)
for this in get_files('/home/ricky/Code/Python'):
if this.match('*.py'):
print this.filepath