如果未提供Flag,则Python分析参数



我已经配置了以下选项:

parser.add_argument('-f', '--files', dest='files', nargs='*', metavar='', default=sys.stdin,
help='File List to Search In')

它在运行时运行得非常好:

% script.py -f file1 file2 .... 

但我也想支持在没有-f标志的情况下执行

含义:

% script.py file1 file2 ...

我试图用位置论证来做这件事,但它是强制性的,即使在命令中引入了-f,它也会一直干扰。

文书工作:我得到了额外的解析参数,这意味着有时执行可以是

%script.py-m-g-r-f文件1文件2。。。。所以我看不出使用sys.argv[1:]会对我有什么帮助。

我需要特别的选项,当-f没有被写入,但文件名被写入。

您可以使用sys.argv访问终端参数

script.py:

import sys

if __name__ == '__main__':
print(sys.argv[1:]

然后运行:

% python script.py file1 file2

输出

['file1', 'file2']

通过定义另一个定位参数来修复它

parser.add_argument('-f','-files',dest='files',nargs='+',metavar='',help='要搜索的文件列表'(parser.add_argument(dest='files2',nargs='*',metavar='',default=False(

并且通过";"错误";作为默认值,以防没有值。

之后我只是运行一个简单的检查

如果args.files2:file_list=args.files2其他:file_list=args.files

这样一来,filelist将包含文件名,不管它是来自定位参数还是-f参数。

最新更新