我有点困惑问题是什么......这是我放在一起的一些代码。
>>> import optparse
>>> import shlex
>>> parser = optparse.OptionParser()
>>> parser.add_option('--build',type=str,default=None)
<Option at 0x...: --build>
--build
在“命令行”上提供选项。
>>> options, args = parser.parse_args(shlex.split("--build=None"))
>>> print options
{'build': 'None'}
>>> options.build is None
False
>>> options, args = parser.parse_args(shlex.split(""))
--build
“命令行”上没有给出选项
>>> print options
{'build': None}
>>> options.build is None
True
如您所见,如果--build
命令行上未提供,则默认为None
(即类型为 的对象NoneType
)。如果提供了 build 并且字符串 == "None",它返回一个字符串 "None"。
如果您坚持传递--build=None
命令行,那么您希望 optparse 对该标志执行的操作有点模棱两可。例如,如果它是一个路径,您可以编写一个函数来检查路径 None 是否存在:例如
import os.path
def path_exists(p):
if(os.path.exists(p)): return p
else: return None
...
parser.add_option('--build',type=path_exists,default=None)
当然,path_exists 可以根据您的应用程序所需的复杂程度。