在Python中文件夹为空时通知?

时间:2018-07-30 08:23:30

标签: python exception

我正在搜索路径中的文件,但是某些子文件夹为空。因此,应该使用异常。

如果遇到一个空文件夹,则会发生此错误。

  

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。修复异常中无法识别的错误。

1 个答案:

答案 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')