在python中搜索和处理特定目录和文件

在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

在我当前的目录中,我有以下文件: 项目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"
        # 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