【发布时间】:2021-09-28 01:11:07
【问题描述】:
所以我试图在我的代码中实现基本的 try 和 except 逻辑,以便在读取命令行参数时读取和处理异常:
我已经能够做到这一点。但我想在抛出错误时明确说明缺少第一个或第二个参数。
这是我的代码。
import sys
import logging
try:
job_name = sys.argv[1]
odate = sys.argv[2]
except IndexError as err:
print('OS error: {0}'.format(err))
else:
print('Correct arguments were provided')
如何产生错误让用户知道缺少哪个 arg?
【问题讨论】:
-
我会在使用之前验证
sys.argv的长度是否合适,但作为一种不是很复杂的通用技术,您可以将job_name和odate设置为None和在except块中检查它们 - 无论哪个仍然是None都是导致异常的原因。 -
如果您只收到一个参数,则无法知道缺少哪个参数。也许用户忘记提供
job_name。也许他们忘记提供odate。也许他们不小心完全运行了错误的程序,并且提供的参数不应该是这些参数中的任何一个。也许他们确实提供了两个参数,但不小心点击了b而不是空格键,这些参数最终成为一个参数。 -
假设我尝试像
foo.py hax一样运行你的程序。我打算让hax成为工作名称还是日期? 你怎么知道?
标签: python python-3.x args try-except