python - 从命令行参数错误读取文件
问题描述
我正在编写一个程序(从命令行参数读取文件)和一些要处理的异常。我有 2 个例外:1)如果我要读取的文件在路径中不存在,我应该给出一个例外。2)如果我要读取的文件的格式不匹配,我应该给出另一个例外。
try:
f = open(sys.argv[2], 'r')
commands = [[line.split()] for line in f.readlines()]
f.close()
except FileNotFoundError:
print('Input file not found')
sys.exit()
对于第一个例外,我这样做了,但我不能做第二个例外,我该怎么办?
注意:第二个异常意味着如果我在命令行中编写了 x.txt 并且如果 x.pptx 存在,我应该给出一个异常,例如“格式不正确”。
解决方案
您可以定义自定义异常:
class MyException(Exception):
pass
如果文件格式检查的条件失败,则引发它:
try:
f = open(sys.argv[2], 'r')
commands = [[line.split()] for line in f.readlines()]
if incorrect_format(sys.argv[2]):
f.close()
raise MyException
f.close()
except FileNotFoundError:
print('Input file not found')
sys.exit()
except MyException:
print('File format not correct')
sys.exit()
您可以在函数中定义文件格式检查的逻辑incorrect_format
。例子:
def incorrect_format(filename):
return filename.split(".")[-1] == "txt"
推荐阅读
- mailchimp - MailChimp - 新订户的营销活动,在更新自定义字段后包含细分和营销活动
- kubernetes - 如何使用 Helm Chart 安装仅创建具有入口的内部负载均衡器而没有外部负载均衡器?
- clickhouse - ClickHouse:如何将toYYYYMMDD之后的整数转换回DateTime?
- vb.net - 如何根据名称作为变量查找工具条,然后更改它的检查值
- python - 使用定义的参数创建新列的函数
- r - 关于森林图 [metafor] 的快速问题:更改已使用效果大小的预印文本
- python - Python中存在增量java解析吗?
- mongodb - MongoDB/Mongoose 如何在复杂结构中添加元素
- pipeline - 争论某种情况是否会导致数据危害
- html - 使用 CSS 获取等长的兄弟姐妹