繁体   English   中英

将字符串作为Python命令行参数传递

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM