sfs*_*fsd 18 python arguments parameter-passing
如果没有参数传递给python脚本,如何打印帮助信息?
#!/usr/bin/env python
import sys
for arg in sys.argv:
if arg == "do":
do this
if arg == ""
print "usage is bla bla bla"
Run Code Online (Sandbox Code Playgroud)
我缺少的是if arg == ""我不知道如何表达的行:(
Jos*_*ght 23
if len(sys.argv) == 1:
# Print usage...
Run Code Online (Sandbox Code Playgroud)
sys.argv的第一个元素始终是脚本本身的名称或空字符串.如果sys.argv只有一个元素,那么一定没有参数.
http://docs.python.org/library/sys.html#sys.argv
AJ.*_*AJ. 14
if len(sys.argv)<2:
Run Code Online (Sandbox Code Playgroud)
程序的名称始终在sys.argv [0]中
正如其他人所说,您可以通过执行以下操作来检查是否传入了任何args:
#!/usr/bin/env python
import sys
args = sys.argv[1:]
if args:
for arg in args:
if arg == "do":
# do this
else:
print "usage is bla bla bla"
Run Code Online (Sandbox Code Playgroud)
但是,有一个名为OptParse的Python模块是为运行脚本时解析命令行参数而显式开发的.我建议调查一下,因为它更符合"标准"(因为它是Python社区中预期和接受的命令行解析方法).
小智 5
以下是解决问题的一种非常 Pythonic 的方法,因为它故意在 try .. except 中生成异常:
import sys
try:
sys.argv[1:] // do something with sys.argv[1:]
except IndexError:
print "usage is..."
sys.exit()
Run Code Online (Sandbox Code Playgroud)