我正在搜索路径中的文件,但是某些子文件夹为空。因此,应该使用异常。
如果遇到一个空文件夹,则会发生此错误。
FionaValueError:在路径中找不到数据集 '/ Users \ user \ Desktop \ testn \ 43003 \ CBOUND'使用驱动程序:*
所以我为这个错误做了一个例外:
folder = Path(r"C:\Users\user\Desktop\testn")
shapefiles =glob('/*/*/Desktop/testn/*/*')
#shapefiles =glob('/*/*/Desktop/testm/*/*,recursive = True')
shapefiles
try:
gdf = pandas.concat([
geopandas.read_file(shp)
for shp in shapefiles
],sort=True).pipe(geopandas.GeoDataFrame)
gdf.to_file(folder / 'compiled.shp')
except FionaValueError as ex:
if shp==[]: #if subfolder is empty print name of folder and subfolder is empty
print(shp + 'is empty')
给出
NameError: name 'FionaValueError' is not defined
所以我需要的是:
1。打印为空的文件夹和子文件夹的名称
2。修复异常中无法识别的错误。
答案 0 :(得分:1)
您应该导入此错误-另请参见docs:
from fiona.errors import FionaValueError
要检查文件夹是否为空,可以使用以下模式:
if not os.listdir(path):
print(f'{path} is empty')
要打印实际的空路径,可以将列表理解重写为标准循环:
from fiona.errors import FionaValueError
import os
import glob
import geopandas as gpd
import pandas as pd
import path
folder = path.Path(r"C:\Users\user\Desktop\testn")
shapefiles = []
for shpfile in glob.iglob('/*/*/Desktop/testn/*/*'):
try:
shapefiles.append(geopandas.read_file(shpfile))
except FionaValueError as ex:
if not os.listdir(shpfile):
print(f'{shpfile} is empty')
gdf = pd.concat(shapefiles, sort=True).pipe(gpd.GeoDataFrame)
gdf.to_file(folder / 'compiled.shp')