Jon*_*han 3 python command-line command-line-arguments
我是Python的新手(就像昨天一样),如果我不知道"显而易见的",请耐心等待.
有两种方法,我可以去这个问题,并且或者将工作对我很好,我不知道是否getopt或optparse包含(从我读什么)我想/需要什么?我想做类似以下的事情:
python this.py --variable VariableName="Value" -v VariableName2="Value2"
Run Code Online (Sandbox Code Playgroud)
要么
python this.py --VariableName "Value"
Run Code Online (Sandbox Code Playgroud)
我面临的主要问题是我可能需要可选地传递任何变量,但不一定全部和任何特定顺序(ergo,raw sys.argv在我的情况下不起作用).对于其中一些变量,我可能会传递字符串,数字和/或数组.
一旦变量在脚本中传递,我将需要检查它们是否设置为非空,并根据需要分配默认值.
谢谢!
我将首先回答我自己的问题。
尽管我很喜欢@mgilson 给出的答案,但我找到了一种“更简单”的方法。我对正则表达式非常熟悉,并且找出关联数组(即字典)并不太困难。
import re
args = {}
args['pythonFile'] = sys.argv[0]
for arg in sys.argv[1:]:
variable = re.search('\-\-(.*)\=',arg)
variable = variable.group(1)
value = re.search('\=(.*)',arg)
value = value.group(1)
args[variable] = value
print args
Run Code Online (Sandbox Code Playgroud)
证明如下:
$ /opt/python27/bin/python2.7 Test.py --var1=1 --var2="Testing This"
{'var1': '1', 'pythonFile': 'Test.py', 'var2': 'Testing This'}
Run Code Online (Sandbox Code Playgroud)
哇!
| 归档时间: |
|
| 查看次数: |
2487 次 |
| 最近记录: |