use*_*118 9 python parsing arguments args
我一直在谷歌搜索近一个小时,我只是卡住了.
对于脚本stupidadder.py,它为命令arg添加2.
例如python stupidadder.py 4
打印6
python stupidadder.py 12
打印14
到目前为止我用谷歌搜索过:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('x', metavar='x', type=int, nargs='+',
help='input number')
...
args = parser.parse_args()
print args
x = args['x'] # fails here, not sure what to put
print x + 2
Run Code Online (Sandbox Code Playgroud)
我无法在任何地方找到直截了当的答案.文档太混乱了.:(有人可以帮忙吗?请和谢谢.:)
tde*_*ney 23
假设您正在学习如何使用argparse模块,那么您非常接近.该参数是返回的args对象的一个属性,引用为x = args.x.
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('x', metavar='x', type=int, nargs='+',
help='input number')
...
args = parser.parse_args()
print args
#x = args['x'] # fails here, not sure what to put
x = args.x
print x + 2
Run Code Online (Sandbox Code Playgroud)
在Ipython中使用您的代码运行的示例,显示args是一个简单的对象,而不是字典。在argparse代码中,使用getattr和访问名称空间setattr
In [4]: args=parser.parse_args(['12','4','5'])
In [5]: args
Out[5]: Namespace(x=[12, 4, 5])
In [6]: args['x']
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-6-3867439e1f91> in <module>()
----> 1 args['x']
TypeError: 'Namespace' object is not subscriptable
In [7]: args.x
Out[7]: [12, 4, 5]
In [8]: getattr(args,'x')
Out[8]: [12, 4, 5]
In [9]: sum(getattr(args,'x'))
Out[9]: 21
Run Code Online (Sandbox Code Playgroud)
vars() 可用于将名称空间转换为字典。
In [12]: vars(args)['x']
Out[12]: [12, 4, 5]
Run Code Online (Sandbox Code Playgroud)
查看argparse文档的“名称空间”部分。
Cla*_*diu -2
我不完全确定你的目标是什么。但如果这就是您所要做的全部事情,那么您不必变得非常复杂:
import sys
print int(sys.argv[1]) + 2
Run Code Online (Sandbox Code Playgroud)
这是相同的,但有一些更好的错误检查:
import sys
if len(sys.argv) < 2:
print "Usage: %s <integer>" % sys.argv[0]
sys.exit(1)
try:
x = int(sys.argv[1])
except ValueError:
print "Usage: %s <integer>" % sys.argv[0]
sys.exit(1)
print x + 2
Run Code Online (Sandbox Code Playgroud)
使用示例:
C:\Users\user>python blah.py
Usage: blah.py <integer>
C:\Users\user>python blah.py ffx
Usage: blah.py <integer>
C:\Users\user>python blah.py 17
19
Run Code Online (Sandbox Code Playgroud)