我已经配置了以下选项:
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参数。