如何使用 python 2.7 检查文件夹和子文件夹中是否存在文件
How to check If a file isn't exists in folder and subfolders using python 2.7
我试图找到其中缺少文件名 "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-mmi3322502\kavim kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi3322950\kavim kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi3350004\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi8750012\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi8950025\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi0050040\kavim_kchulim.shp
>>>
这将打印所有包含 "kavi*" 文件的文件夹。但我需要输出所有不包含 "kavi*" 文件
的文件夹
你可以试试这个
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
你的os.walk()
returns当前路径为root
,当它是目录时,其中的文件为files
。如果 files
的 none 匹配你的模式,你应该打印出当前的 root
.
for root, dirs, files in os.walk(rootPath):
if files != [] and fnmatch.filter(files, pattern) == []:
print root
我试图找到其中缺少文件名 "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-mmi3322502\kavim kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi3322950\kavim kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi3350004\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi8750012\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi8950025\kavim_kchulim.shp
D:\PROJECTS\road57\gis\layers\taba\taba-mmi0050040\kavim_kchulim.shp
>>>
这将打印所有包含 "kavi*" 文件的文件夹。但我需要输出所有不包含 "kavi*" 文件
的文件夹你可以试试这个
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
你的os.walk()
returns当前路径为root
,当它是目录时,其中的文件为files
。如果 files
的 none 匹配你的模式,你应该打印出当前的 root
.
for root, dirs, files in os.walk(rootPath):
if files != [] and fnmatch.filter(files, pattern) == []:
print root