如果数据目录为空,则退出 Python 程序

Exit Python program if data directory is empty

更新:我想我可能刚刚意识到我需要弄清楚以下内容,这是用 except 子句指定的正确错误类型(显然是新的)

从指定的根目录开始,我的程序遍历子目录,然后遍历子目录中的文件,识别有效 (.csv) 数据文件,然后对数据进行聚合和计算。

在根目录恰好为空的情况下,有人可以建议一种clean/graceful的方法来简单地在启动时退出程序而不进行进一步处理吗?

我尝试采纳我在此处找到的建议,但没有达到我的预期效果: Exit gracefully if file doesn't exist

那个人的代码是:

def main():
    try:
        file = open('file.txt', 'r')
    except IOError:
        print('There was an error opening the file!')
        return

我尝试了上面的方法,它适用于上面的特定情况。但是,当我尝试按如下方式调整它时,它 'broke' 并且我得到了 "Index out of range error",而不是下降到 except 代码。

dir = os.listdir(masterDirPath)
def main():
    try:
        item = dir[0]
    except IOError:
        print('The data area is empty.')
        return

(Also/instead,我非常欢迎对总体任务的一些完全不同的方法提出建议)

空列表没有任何元素,因此您应该捕获 IndexError 而不是 IOError

def main():
    try:
        item = dir[0]
    except IndexError:
        print('The data area is empty.')
        return
#!/usr/bin/env python

import os 
path = 'path-to-your-dir'
if os.listdir(path) == []: 
    exit(0)
else: 
    print "Your other code goes here."

为什么要使用异常?

if not dir:
    print('The data area is empty')
    exit(0)

item = dir[0]

要立即退出您的程序,您应该使用 exit()quit()。您可以使用 Python 中的许多对象都是真实的这一事实来代替抛出错误;一个空列表是 False,一个包含一个或多个元素的列表是 True.

import os
dir_contents = os.listdir('.')
if dir_contents:
    do_stuff
else:
    print('Directory was empty. Exiting')
    exit()

如果您更喜欢显式而不是隐式,您还可以在索引到列表之前使用 len(dir_contents) 检查列表的长度。

您可能还想避免在 Python 中使用 dir 作为变量名,因为它会隐藏内置函数 dir().

这些是退出命令及其 definitions

exit(0) 表示没有任何错误/问题的干净退出

exit(1) 表示存在一些问题/错误/问题,这就是程序退出的原因。

os._exit() 对于子进程

quit() SystemExit 异常在幕后。

sys.exit()杀死解释器