【发布时间】:2016-09-28 02:22:27
【问题描述】:
我想定义一个函数来检查是否有任何 argv 被提供给命令行,否则会打印一个字符串或返回两个字符串。代码如下:
import sys
def get_input():
if len(sys.argv) > 1:
path_input_text = sys.argv[1]
path_basic_conf = sys.argv[2]
return path_input_text, path_basic_conf
elif len(sys.argv) == 1:
print "Takes at least two arguments"
else:
print "No arguments entered"
return 'file.txt', 'file.xml'
我尝试这样调用函数:
a,b = get_input()
当我给出两个参数时它会起作用,但在其他两种情况下它会失败,即 elif 和 else 语句。我怎样才能让它工作?我应该使用 try/except 语句吗?谢谢
编辑 1
当我只尝试 1 个参数时:
IndexError: list index out of range
当我尝试不带参数时:
TypeError: 'NoneType' object is not iterable
在给定 1 个参数的情况下,我想提出一个错误,而不是返回 None,None。
【问题讨论】:
-
如果您想这样做,您的函数必须总是返回两件事,否则会引发错误。也许只是
return sys.argv[0], None?或者,如果程序无法继续使用一个参数,请引发错误而不是打印它。 -
定义
fails。它有什么作用? -
使用模块
argparse。