我想创建一个简单的python脚本,它将从控制台获取一个参数,它将显示此参数。如果没有参数,那么我想显示错误信息,但自定义信息不像IndexError:列表索引超出范围
这样的事情:
if isset(sys.argv[1]):
print sys.argv[1];
else:
print "No parameter has been included"
答案 0 :(得分:2)
你可以检查长度
if len(sys.argv) > 1:
...
或者尝试/除
try:
sys.argv[1]
except IndexError as ie:
print("Exception : {0}".format(ie))
答案 1 :(得分:1)
if len(sys.argv) >= 2:
print(sys.argv[1])
else:
print("No parameter has been included")
对于更复杂的命令行界面,有argparse
模块
在Python的标准库中 - 但对于简单的项目,只需要几个参数直接检查sys.argv
就可以了。
更新,推荐使用外部库“click”,因为它提供了非常“Pythonic”的方式来包含复杂文档,方式很容易记录
答案 2 :(得分:0)
import sys
try:
print sys.argv[1]
except IndexError:
print "No parameter has been included"
答案 3 :(得分:0)
import sys
print sys.argv[0] # will print your file name
if len(sys.argv) > 1:
print sys.argv[1];
else:
print "No parameter has been included"
OR
import sys
try:
print sys.argv[1]
except IndexError, e:
print "No parameter has been included"
答案 4 :(得分:0)
为了好玩,您还可以使用getopt
,它为您提供了一种使用unix getopt
约定预定义可接受选项的方法。
import sys
import getopt
try:
opts, args = getopt.getopt(sys.argv[1:], "hvxrc:s:", ["help", "config=", "section="])
except getopt.GetoptError as err:
print ("Option error:", str(err))
opts=[]
for op , val in opts:
print ("option",op,"Argument",val)
if not opts:
print ("No parameter supplied")
在上文中,如果提供了错误的参数,则所有选项都将被废弃 使用的例子是:
python myprog.py -h
python myprog.py --help
python myprog.py -c123
python myprog.py --config=123
https://pymotw.com/2/getopt/
http://linux.about.com/library/cmd/blcmdl1_getopt.htm
答案 5 :(得分:0)
在没有异常模型的情况下使用if else简写,我们可以在一行中读取args
args = sys.argv
env = args[1:] and args[1] or None
username = args[2:] and args[2] or None
password = args[3:] and args[3] or None