我可以这样调用我的脚本:
python D:\myscript.py 60
在脚本中,我可以这样做:
arg = sys.argv[1]
foo(arg)
但是我该如何测试命令行调用中是否输入了参数?我需要像这样做:
if isset(sys.argv[1]):
foo(sys.argv[1])
else:
print "You must set argument!!!"
我可以这样调用我的脚本:
python D:\myscript.py 60
在脚本中,我可以这样做:
arg = sys.argv[1]
foo(arg)
但是我该如何测试命令行调用中是否输入了参数?我需要像这样做:
if isset(sys.argv[1]):
foo(sys.argv[1])
else:
print "You must set argument!!!"
import sys
len( sys.argv ) > 1
不要使用sys.argv
来处理命令行界面,有一个模块可以完成这个任务:argparse
。
你可以通过将required=True
传递给add_argument
来将参数标记为必需的。
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("foo", ..., required=True)
parser.parse_args()
sys.argv
有什么问题吗? - Jonikfoo
是60
,那么它将成为一个位置参数,您不能向位置参数添加required=True
。 - geedoubleyaif len(sys.argv) < 2:
print "You must set argument!!!"
if len(sys.argv) == 1:
print('no arguments passed')
sys.exit()
这将检查是否传递了任何参数。如果没有参数,它将退出脚本,而不运行其余部分。
IndexError
异常:try:
print(sys.argv[1])
except IndexError:
print("Empty argument")
for arg in sys.argv:
print (arg)
#print cli arguments
您可以使用它将参数存储在列表中并使用它们。这比像这样使用它们更安全sys.argv[n]
如果没有给出参数,则没有问题
if(sys.argv[1]):
应该可以正常工作,如果没有参数,sys.argv[1]将会(应该)为空。
IndexError
而崩溃。 - khachik
sys.argv
不为空,至少包含脚本的名称作为sys.argv[0]
。 - khachik