如果数据目录为空,则退出 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()
杀死解释器
更新:我想我可能刚刚意识到我需要弄清楚以下内容,这是用 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()
杀死解释器