更新:我想我可能刚刚意识到我需要弄清楚:下面,这是用except子句指定的正确错误类型(显然是新的)
从指定的根目录开始,我的程序遍历子目录,然后遍历这些目录中的文件,识别有效(.csv)数据文件,然后聚合并执行数据计算。
如果根目录恰好是空的,有人可以建议一种干净/优雅的方式,只需在开始时退出程序而无需进一步处理吗?
我试图调整我在这里找到的建议,但它没有像我预期的那样工作: 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
我上面试了一下,它适用于上面的特定情况。然而,当我试图按照以下方式进行调整时,它已经打破了#39;我得到一个"索引超出范围错误"而是下降到除了代码。
dir = os.listdir(masterDirPath)
def main():
try:
item = dir[0]
except IOError:
print('The data area is empty.')
return
(而且/相反,我非常欢迎对整个任务的其他方法提出建议)
答案 0 :(得分:1)
空列表没有元素,因此您应该抓住IndexError
而不是IOError
。
def main():
try:
item = dir[0]
except IndexError:
print('The data area is empty.')
return
答案 1 :(得分:1)
你为什么要使用例外?
if not dir:
print('The data area is empty')
exit(0)
item = dir[0]
答案 2 :(得分:1)
要立即退出程序,您应使用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()
。
答案 3 :(得分:0)
#!/usr/bin/env python
import os
path = 'path-to-your-dir'
if os.listdir(path) == []:
exit(0)
else:
print "Your other code goes here."
答案 4 :(得分:0)
这些是退出命令及其definitions
exit(0)
表示没有任何错误/问题的干净退出
exit(1)
表示存在一些问题/错误/问题,这就是程序退出的原因。
os._exit()
quit()
SystemExit异常。
sys.exit()
杀死翻译