[英]Passing Strings as Python command-line arguments
我可以将int和chars作为Python命令行参数传递,但无法成功将Strings传递给以下内容:
if __name__ == '__main__' :
try :
print(len(sys.argv))
arg1 = ast.literal_eval(sys.argv[1])
arg2 = ast.literal_eval(sys.argv[2])
print(arg1)
print(arg2)
except Exception :
print('error')
以下作品:
python test.py 1 2
和打印:
3
1
2
如下:
python test.py'1''2'
还打印
3
1
2
但是,以下不起作用:
python test.py ‘one’ ‘two’
它看到args的数量,但抛出一个异常试图抓住它们:
3
error
有人可以提供一些关于如何将Strings作为命令行args传递的指导吗?
谢谢。
你的shell会在python看到之前吃那些引号。 试试这样:
python test.py '"one"' '"two"'
顺便说一句,命令行args无论如何都是作为字符串传递的。 literal_eval
就像这样奇怪; 更好的模式是在需要数字时将字符串转换为数字,否则将其保留为字符串。 这也可以避免在命令行上两次引用字符串。
argparse
模块可以自动为您处理这些内容。
optparse.OptionParser
可能对您有所帮助。
你可以像这样使用它:
from optparse import OptionParser
if __name__ == "__main__":
parser = OptionParser(version="%prog 1.0.0")
parser.add_option("-c", "--config", action="store", dest="config_file",
default="test", type="string",
help="let prog load a specified configure file")
parser.add_option("-v", "--verbose", action="store_true", dest="verbose",
default=False, help="let prog run in verbose model")
options, args = parser.parse_args()
if options.verbose:
print "run in verbose model"
print "configure file is %s"%(options.config_file)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.