我希望能够传递参数,而无需为optparse指定选项。如果我确实传递了一个选项,那么它必须是一个已知选项,否则脚本将失败。
将以下文件转发到目的地
myscript.py filename
将以下文件夹转发到目的地(所有这些都在我创建的功能中找到)。
myscript.py -f foldername
原因是,我有一个与“foldername”联系的数组(或词典)。如果未传递任何选项,则CLI中给出的参数是位于用户调用脚本的工作文件夹中的文件。传递-f
意味着上传其值存储在dict中的文件夹(用户可以在任何目录中,此文件夹的路径是提前知道的。)
我最好为这两个选项添加选项吗? -f
用于文件,-v
用于文件夹aka版本?
答案 0 :(得分:0)
我总是喜欢明白,但你可以短路optparse。
# args[0] is always the executable's name
if len(args) > 1:
parser.parse_args(args, options)
else:
#open file
答案 1 :(得分:0)
将-f
视为没有参数的选项,并使用它来切换位置参数的行为(即foldername
)。
答案 2 :(得分:0)
parser.parse_args()
始终返回两个值:
(Totorial)
因此,您可以这样做:
parser = OptionParser()
parser.add_option("-f", "", action="store_true", dest="folder", default=False)
(options, args) = parser.parse_args(sys.argv)
fname = args[1] # name of folder or file
if options.folder:
# do stuff for folder
else:
# do stuff for file