Python:optparse是否可以具有ACTION属性以像STORE和STORE_TRUE一样起作用? [英] Python: Can optparse have the ACTION attribute to act both like STORE and STORE_TRUE?
问题描述
我正在使用optparse
来获取命令行输入.
I am using optparse
to get command line input.
让我们说我正在运行脚本demo.py
,它会创建一些输出.但是除非我指定命令行输入,否则输出不会写入文件.
Lets say that I am running a script demo.py
and it creates some output. But unless I specify the command line input, the output is not written to a file.
我正在尝试执行以下操作:
I am trying to do the following:
python demo.py
应该运行脚本,但不要将输出写入任何地方.
python demo.py
in command line should run the script, but not write the output anywhere.
python demo.py -o
应该将输出写入我的默认文件名output.txt
.
python demo.py -o
in command line should write the output to my default file name output.txt
.
python demo.py -o demooutput.txt
应该将输出写入文件demooutput.txt
.
python demo.py -o demooutput.txt
in command line should write the output to file demooutput.txt
.
PS:我不希望从optparse
切换到argparse
.
PS: I would not prefer to switch to argparse
from optparse
.
推荐答案
您可以使用选择解析回调来实现这一目标.
You can use optparse-callbacks to achieve this.
这是在您的用例中起作用的方式.
Here is how it wiill work for your use case.
parser.add_option("-o", action="callback", dest="output", callback=my_callback)
def my_callback(option, opt, value, parser):
if len(parser.rargs) > 0:
next_arg = parser.rargs[0]
if not next_arg.startswith("-"):
# Next argument is not another option
del parser.rargs[0]
setattr(parser.values, option.dest, next_arg)
return
# If not processed, set the default value
setattr(parser.values, option.dest, "output.txt")
这篇关于Python:optparse是否可以具有ACTION属性以像STORE和STORE_TRUE一样起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!