Python 解析命令行参数 作为我的问题的一个例子,考虑以下情况:
用户从命令行启动程序,语法与此类似Python 解析命令行参数 作为我的问题的一个例子,考虑以下情况:,python,command-line,Python,Command Line,用户从命令行启动程序,语法与此类似 python prog.py "hi there" hi=Hello there=World! 程序的输出是“Hello World!” 我的问题涉及到解析参数的部分。如何保存“hi=Hello there=World!”部分中包含的信息以便使用?从那里我应该可以用它做点什么 我根本不知道参数是什么,因此解决方案需要尽可能通用。使用 安装docopt: $ pip install docopt 编写prog.py的代码: """ Usage: p
python prog.py "hi there" hi=Hello there=World!
$ pip install docopt
编写prog.py的代码
:
"""
Usage:
prog.py <greeting> <name>
"""
if __name__ == "__main__":
from docopt import docopt
args = docopt(__doc__)
print args
print "------"
name = args["<name>"]
greeting = args["<greeting>"]
print "{greeting} {name}!".format(greeting=greeting, name=name)
“”“
用法:
prog.py
"""
如果名称=“\uuuuu main\uuuuuuuu”:
从docopt导入docopt
args=docopt(文档)
打印参数
打印“----”
name=args[“”]
问候语=args[“”]
打印“{greeting}{name}!”。格式(greeting=greeting,name=name)
使用它:
首先请参阅使用说明:
$ python prog.py
Usage:
prog.py <greeting> <name>
$python prog.py
用法:
prog.py
然后使用它:
$ python prog.py Ola Mundi
{'<greeting>': 'Ola',
'<name>': 'Mundi'}
------
Ola Mundi!
$python prog.py Ola Mundi
{'':'Ola',
'''Mundi'}
------
奥拉·蒙迪!
你必须这样做。。。将其另存为“argtest.py”:
这将把第一个参数传递到main()中
因此,如果您是从命令行运行
python argtest.py hello
您的输出将是
hello
当然,在main()
中,您可以定义要对参数执行的任何操作
就我个人而言,我在sys.argv[1:][3]中的if uuuu name_uuuuuuu==“uuu main_uuuuuu”:
行下进行解析,通常类似于sys.argv[1:][1]中x的arguments=[x.split('=')。\u35;如果你想分离像“pie=apple fart=臭蛋”这样的参数
sys.argv
是在python argtest.py
空格分隔后放置的内容的列表
例如,如果执行python argtest.py苹果派逗号poop
sys.argv[1] == 'apple'
sys.argv[2] == 'pie'
sys.argv[3] == 'comma'
sys.argv[4] == 'poop'
我最终使用了简单的字符串处理:
import sys
entry = {}
for i in sys.argv[1:]:
pos = i.find("=")
entry[i[:pos]] = i[pos+1:]
使用模块。或者使用
docopt
更简单。将您的问题标题复制/粘贴到google中会得到三个Python模块作为最重要的结果。@Lattyware除非我会避免使用optparse
,因为它已被弃用。@AlexThornton确实,链接到argparse的页面顶部有一个很大的警告。
import sys
entry = {}
for i in sys.argv[1:]:
pos = i.find("=")
entry[i[:pos]] = i[pos+1:]