在python中搜索和处理特定目录和文件
在我当前的目录中,我有以下文件: 项目1、项目5、垃圾、临时工和个人 我只想浏览这个级别的子目录。 对于垃圾邮件、临时文件和个人文件以外的目录,我想打开并处理其中的一个特定文件,比如project.c在python中搜索和处理特定目录和文件,python,file,Python,File,在我当前的目录中,我有以下文件: 项目1、项目5、垃圾、临时工和个人 我只想浏览这个级别的子目录。 对于垃圾邮件、临时文件和个人文件以外的目录,我想打开并处理其中的一个特定文件,比如project.c for dirs in os.walk('.').next()[1] : if dirs !='junk' or dirs!='temp' or dirs != 'personal': print dirs print "relevant\n
for dirs in os.walk('.').next()[1] :
if dirs !='junk' or dirs!='temp' or dirs != 'personal':
print dirs
print "relevant\n"
# file = open(project//project.c) # process relevant files
我该怎么做呢?这里有一种方法:
import os
import glob
ignoreDirs = ['junk', 'temp', 'personal']
for x in glob.glob('*'):
if (os.path.isdir(x) == False):
continue
if (x in ignoreDirs):
continue
# ... do processing work here ...
这是另一种类似的方式
ignored=set(('junk','temp','personal'))
projectfiles=set(('project.c','Makefile.in'))
for direntry in os.listdir('.') :
if not direntry in ignored :
filename=os.path.join(os.path.dirname('.'),direntry)
if os.path.isdir(filename) :
for projectfile in projectfiles :
projectfilepath=os.path.join(filename,projectfile)
if os.path.exists(projectfilepath) :
fd=open(projectfilepath)
# Do whatever processing is needed
fd.close()
从python文档中,可以修改目录名以影响遍历: 当topdown为True时,调用方可以 就地修改目录名称列表 (可能使用del或slice 赋值)和walk()将仅 递归到其 名字仍然是肮脏的名字;这可能是 用于删减搜索,强制 访问的具体顺序,甚至 将目录通知walk() 调用方在其之前创建或重命名 再次恢复walk()。修改 自上而下为False时的dirnames是 无效,因为处于自底向上模式 目录名中的目录是 在dirpath本身被删除之前生成 生成 因此,您可以执行以下操作:
def clean(dirs):
to_ignore = ("tmp", "junk", "personal")
for d in to_ignore:
if d in dirs:
dirs.remove(d)
for dirpath, dirnames, filenames in os.walk('.'):
clean(dirnames)
# process relevant files