import sys
sys.argv[0]
filename = sys.argv[1]
prop = sys.argv[2]
show = sys.argv[3]
if show == "-show":
show = 1
(show = 1稍后会做一些事情)。我的问题是当我没有为sys.argv [3]提供任何东西时,如果我放了:
python program.py examplefile.txt exampleline
然后程序没有运行,我知道这是因为它期待一个参数,这就是为什么它搞乱了,但有没有办法告诉它sys.argv [3]并不总是使用和可以是空白的吗?
答案 0 :(得分:1)
你可以检查sys.argv
的长度,但为什么要这么麻烦?使用try / catch:
try: flag = sys.argv[1]
except: flag = False
那样变量flag
总是有一个值,你可以编写知道它总是有值的代码。代码的行数少于if / else测试。这是一场全胜利。
答案 1 :(得分:1)
另一方面,从文档中检查python中的this模块可能会很好 -
argparse模块可以轻松编写用户友好的命令行界面。程序定义了它需要的参数,argparse将弄清楚如何解析sys.argv中的参数。当用户给程序提供无效参数时,argparse模块还会自动生成帮助和使用消息并发出错误。
它还支持可选参数。也许你可以看一下{{3}}来开始这个。
答案 2 :(得分:0)
在没有第三个参数的情况下运行它时,您应该在该行上获得IndexError。如果您没有收到IndexError,那么其他错误就应该修复它。如果你是,一切都很好 - 你只需要检查sys.argv
的长度,在你的代码中考虑当该值为3或4时会发生什么:
if len(sys.argv) == 3:
# Stuff without sys.argv[3]
if len(sys.argv) == 4:
# Stuff with sys.argv[3]