如何在同一个python脚本中使用sys和argparse而不会出现无法识别的参数错误



正如我的标题所示,我正在使用sys和argparse向代码中添加命令行参数。Sys被用来添加一个文件路径,比如/sample/test/etc,argparse被用来在我的代码中添加一个单独的可选功能。当我只使用argparse时,我的代码运行得很好,但当sys出现时,就会出现以下错误:

test.py:错误:无法识别的参数:/sample/test/etc

代码的前几行我使用sys将文件路径保存到一个变量中:

导入系统

path=sys.argv[1]

我是否可以利用sys来记录文件路径,同时在代码的后面保留我的argparse-r?

您不需要使用sys.argv来捕获路径,您可以使用argparse来处理这两个参数。如果添加一个没有-前缀的参数,它将被视为强制位置参数:

import argparse
parser = argparse.ArgumentParser(description='Description')
parser.add_argument('path', help='Path')
parser.add_argument('-r', '--relative', action='store_true',
help='optional argument')
args = parser.parse_args()
print('path: {:}'.format(args.path))
print('relative: {:}'.format(args.relative))

用法:

myscript.py [-h] [-r] path

相关内容

最新更新