如何解决如果未提供标志,则为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 file1 file2 .... 所以我看不到使用sys.argv [1:]对我有什么帮助。
我特别需要未写入-f但写入文件名的选项。
解决方法
您可以使用sys.argv
script.py
:
import sys
if __name__ == '__main__':
print(sys.argv[1:]
然后运行:
% python script.py file1 file2
OUT
['file1','file2']
,
设法通过定义另一个定位参数来解决它
parser.add_argument('-f','--files',dest ='files',nargs ='+',metavar ='',help ='要搜索的文件列表') parser.add_argument(dest ='files2',nargs ='*',metavar ='',默认= False)
并在没有值的情况下将“ False”作为默认值传递。
然后我只需要进行简单的检查
如果args.files2: file_list = args.files2 其他: file_list = args.files
这种方式file_list将包含文件名并不重要,无论它来自定位参数还是-f参数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。