【问题标题】:How to check If a file isn't exists in folder and subfolders using python 2.7如何使用python 2.7检查文件夹和子文件夹中是否不存在文件
【发布时间】:2016-05-04 04:07:20
【问题描述】:

我尝试在其中查找缺少文件名“kavi*”的文件夹。所有文件夹分布在一个大文件夹中,该文件夹分为许多子文件夹和子子文件夹。 我开始这样的代码,但我不知道如何继续:

import arcpy,fnmatch,os

rootPath = r"D:\PROJECTS\road57\gis\layers\taba\taba-mmi"
pattern = 'kavi*.shp'
for root, dirs, files in os.walk(rootPath):
    for filename in fnmatch.filter(files, pattern):
        print(os.path.join(root, filename))         

输出是:

D:\PROJECTS\road57\gis\layers\taba\taba-mmi\8233\4022502\kavim kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi\8233\4022950\kavim kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi\8233\4050004\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi\9887\4050012\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi\9889\4050025\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi\9900\4050040\kavim_kchulim.shp

>>>

这会打印所有带有“kavi*”文件的文件夹。但我需要输出所有不包含“kavi*”文件的文件夹

【问题讨论】:

  • 那么您要寻找的输出是什么?您已经在打印所有匹配的文件了。
  • 我不确定我是否理解。假设您有:a/a/b/a/c/a/c/kavi.shpa/c/d/。预期的输出是什么?
  • 例如,如果我在所有文件夹中都有“kavi*.shp”文件,而在一个文件夹中我没有​​这个文件,我会得到这样的输出:D:\ 中缺少文件项目\road57\gis\layers\taba\taba-mmi\7333\4022000

标签: python python-2.7 directory subdirectory


【解决方案1】:

你可以试试这个

import arcpy,fnmatch,os

rootPath = r"D:\PROJECTS\road57\gis\layers\taba\taba-mmi"
pattern = 'kavi*.shp'
match_set = set()
non_match_set = set()
for root, dirs, files in os.walk(rootPath):
    # Return the subset of the list of names that match pattern.
    # if match doesn't occur return list will be empty, 
    # hence code goes in else block
    if fnmatch.filter(files, pattern):
        match_set.add(root)
    else: 
        non_match_set.add(root)    

print non_match_set

【讨论】:

    【解决方案2】:

    您的os.walk() 返回当前路径为root,当它是一个目录时,其中的文件为files。如果没有一个files 与您的模式匹配,您应该打印出当前的root

    for root, dirs, files in os.walk(rootPath):
        if files != [] and fnmatch.filter(files, pattern) == []:
            print root
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 2012-02-05
      • 2021-07-09
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      相关资源
      最近更新 更多