python - 如果 python 中没有选项,optparse 可以工作

标签 python linux python-2.7 optparse

即使有选项,如果没有选项,我也需要加载参数。

#!/usr/bin/python
import optparse

parser = optparse.OptionParser()
parser.add_option('-i', dest='name', help='some')
parser.add_option('-c', dest='name', help='some')
parser.add_option('-p', action='store', help='password')

print parser.parse_args()

[root@server tmp]# ./test -i abc
(<Values at 0x4011368: {'p': None, 'name': 'abc'}>, [])
[root@server tmp]# ./test  abc
(<Values at 0x5855368: {'p': None, 'name': None}>, ['abc'])

现在,即使我没有使用任何选项,我也需要值“abc”。因此,请告诉我如何访问该值。

最佳答案

仅根据您的输出,您应该能够看到 parse_args 返回一个元组。该元组的第一个元素是包含已定义选项的值的对象,第二个元素是解析选项后剩余的参数列表。您可以在官方 tutorial 阅读更多相关内容.

考虑到这一点,你可以简单地写

options, arguments = parser.parse_args()

并使用参数对该列表执行您想要的任何操作。

但是,您的问题似乎是当您提供选项时,参数被解析为选项的值。这是由您定义选项的方式引起的,因为选项 -i-c 需要值。

如果您希望这些选项为 bool 值,则需要手动定义。一个选项代码的示例类似于

# This defines an option which set name to True if option is provided, otherwise
# name is set to False
parser.add_option('-i', dest='name', help='some', action="store_true", default=False)

这也意味着您不需要为该选项提供值,因此当解析器读取选项时不会消耗参数。

如果您希望您的选项是非 bool 值,但又不想证明它们的值,那么我不确定我是否明白您想要做的事情。

关于python - 如果 python 中没有选项,optparse 可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24094977/

相关文章:

python - 在 PsychoPy 中定义楼梯的正确答案

python - 如何将日志消息写入文件

python - 解析 ICINGA status.dat 文件

python - 使用 mime multipart 从文件中提取内容

c# - 使用 mono 在 Linux 上查看 C# 代码的 CIL

linux - 移动已编译的 Haskell 程序

python - multiprocessing.Queue deadlocks after "reader"进程死亡

windows - 使用py2exe自带的python解释器

python - 如何迭代两个不同大小的列表以获得新列表?

linux - 如何在 Linux 上转义单引号