Python 命令行参数字符串以“-”开头
Python Command Line Argument String starts with '-'
我有一个 python 脚本,它接受命令行参数作为处理的输入,我正在为此使用 argparse
模块。
相关解析代码:
import argparse
my_parser = argparse.ArgumentParser(description="Sample code for reference")
my_parser.add_argument("--output_file", action="store", type=str, required=True)
my_parser.add_argument("--pattern", action="store", type=str, required=True)
my_parser.add_argument("--some_string", action="store", type=str, required=True)
args = my_parser.parse_args()
print(args.output_file)
print(args.pattern)
print(args.some_string)
此文件 运行 为(工作正常):
python3 file.py --output_file output.txt --pattern "abc etc" --some_string "some string"
output.txt
abc etc
some string
问题是,我的一些“模式”和“some_string(s)”以 -
开头。例如
python3 file.py --output_file output.txt --pattern "-problem" --some_string "-abc"
usage: file.py [-h] --output_file OUTPUT_FILE --pattern PATTERN --some_string SOME_STRING
file.py: error: argument --pattern: expected one argument
这在 bash 中检测为问题(shell 我正在使用 运行 脚本,OS:Ubuntu 20.04),因为它检测到这是另一个参数,而不是 --pattern
等的值
我该如何解决这个问题?
编辑:在代码中添加了读取已解析的参数和我收到的错误
按照@Inian 的建议,我使用以下方式 运行 脚本:
python3 file.py --output_file output.txt --pattern="-problem" --some_string="-abc"
我得到了预期的输出,而不是错误:
output.txt
-problem
-abc
这解决了我的问题。谢谢
我有一个 python 脚本,它接受命令行参数作为处理的输入,我正在为此使用 argparse
模块。
相关解析代码:
import argparse
my_parser = argparse.ArgumentParser(description="Sample code for reference")
my_parser.add_argument("--output_file", action="store", type=str, required=True)
my_parser.add_argument("--pattern", action="store", type=str, required=True)
my_parser.add_argument("--some_string", action="store", type=str, required=True)
args = my_parser.parse_args()
print(args.output_file)
print(args.pattern)
print(args.some_string)
此文件 运行 为(工作正常):
python3 file.py --output_file output.txt --pattern "abc etc" --some_string "some string"
output.txt
abc etc
some string
问题是,我的一些“模式”和“some_string(s)”以 -
开头。例如
python3 file.py --output_file output.txt --pattern "-problem" --some_string "-abc"
usage: file.py [-h] --output_file OUTPUT_FILE --pattern PATTERN --some_string SOME_STRING
file.py: error: argument --pattern: expected one argument
这在 bash 中检测为问题(shell 我正在使用 运行 脚本,OS:Ubuntu 20.04),因为它检测到这是另一个参数,而不是 --pattern
等的值
我该如何解决这个问题?
编辑:在代码中添加了读取已解析的参数和我收到的错误
按照@Inian 的建议,我使用以下方式 运行 脚本:
python3 file.py --output_file output.txt --pattern="-problem" --some_string="-abc"
我得到了预期的输出,而不是错误:
output.txt
-problem
-abc
这解决了我的问题。谢谢