如何向python脚本添加命令行参数帮助?

如何向python脚本添加命令行参数帮助?,python,Python,我正在尝试创建一个python脚本,使用命令行中的以下命令可以运行该脚本: python3 myprogramname.py –in_file input.fasta –out_file output.fasta –unk_file unknown.fasta –n_mismatch 3 –min_len 150 -forward GTGCCAGCMGCCGCGGTAA -reverse ACAGCCATGCANCACCT 为此,我尝试设置参数,以便在使用以下命令时,帮助输出可以帮助用户: p

我正在尝试创建一个python脚本,使用命令行中的以下命令可以运行该脚本:

python3 myprogramname.py –in_file input.fasta –out_file output.fasta –unk_file unknown.fasta –n_mismatch 3 –min_len 150 -forward GTGCCAGCMGCCGCGGTAA -reverse ACAGCCATGCANCACCT
为此,我尝试设置参数,以便在使用以下命令时,帮助输出可以帮助用户:

python3 myprogramname.py -help
到目前为止,我有以下脚本,但有些错误似乎无法修复:

from sys import argv, exit

import argparse

parser = argparse.ArgumentParser(prog="arg.py", usage="%(arg.py)s [options]")

#Mandatory arguments
parser.add_argument("--in_file", help = "The name of the input FASTA file.")
parser.add_argument("--out_file", help = "The name of the trimmed reads file.")
parser.add_argument("--unk_file", help = "The name of the file containing unprocessed reads.")
parser.add_argument("--n_mismatch", help = "The tolerance for mismatches in the forward or reverse primer sequence.")
parser.add_argument("--min_len", help = "The minimum length a sequence must be in order to be processed")
parser.add_argument("--h", help = "Insert helpful information.")

#Parse arguments
args = parser.parse_args()

parser.print_help()
理想情况下,
python3 myprogramname.py-help的输出应产生以下内容:

usage: myprogramname.py -in_file <inputfile> -out_file <outfile> -unk_file <unknownfile> -n_mismatch <mismatchnumber> -min_len <minimumsequencelengthnumber> -forward <forwardprimerstring> -reverse <reverseprimerstring>

required arguments:
--in_file The name of the input FASTA file
--out_file The name of the trimmed reads file
--unk_file The name of the file containing unprocessed reads
--n_mismatch The tolerance for mismatches in the forward or reverse primer sequence
--min_len The minimum length a sequence must be in order for it to be processed
--h The help information for your program
用法:myprogramname.py-in\u file-out\u file-unk\u file-n\u不匹配-min\u len-forward-reverse
所需参数:
--在\u文件中输入文件的名称
--out\u file修剪后的读取文件的名称
--unk_file包含未处理读取的文件的名称
--n_不匹配正向或反向引物序列中不匹配的公差
--min_len序列必须达到的最小长度,才能对其进行处理
--h您的程序的帮助信息
错误消息:

Traceback (most recent call last):
  File "/usr/lib/python3.6/argparse.py", line 1775, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "/usr/lib/python3.6/argparse.py", line 1981, in _parse_known_args
    start_index = consume_optional(start_index)
  File "/usr/lib/python3.6/argparse.py", line 1889, in consume_optional
    raise ArgumentError(action, msg % explicit_arg)
argparse.ArgumentError: argument -h/--help: ignored explicit argument 'elp'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "arg.py", line 18, in <module>
    args = parser.parse_args()
  File "/usr/lib/python3.6/argparse.py", line 1743, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "/usr/lib/python3.6/argparse.py", line 1782, in parse_known_args
    self.error(str(err))
  File "/usr/lib/python3.6/argparse.py", line 2400, in error
    self.print_usage(_sys.stderr)
  File "/usr/lib/python3.6/argparse.py", line 2370, in print_usage
    self._print_message(self.format_usage(), file)
  File "/usr/lib/python3.6/argparse.py", line 2336, in format_usage
    return formatter.format_help()
  File "/usr/lib/python3.6/argparse.py", line 291, in format_help
    help = self._root_section.format_help()
  File "/usr/lib/python3.6/argparse.py", line 222, in format_help
    item_help = join([func(*args) for func, args in self.items])
  File "/usr/lib/python3.6/argparse.py", line 222, in <listcomp>
    item_help = join([func(*args) for func, args in self.items])
  File "/usr/lib/python3.6/argparse.py", line 308, in _format_usage
    usage = usage % dict(prog=self._prog)
KeyError: 'arg.py'
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python3.6/argparse.py”,第1775行,位于parse\u known\u args中
名称空间,args=self.\u解析\u已知\u args(args,名称空间)
文件“/usr/lib/python3.6/argparse.py”,第1981行,在已知的参数中
开始索引=消耗索引可选(开始索引)
文件“/usr/lib/python3.6/argparse.py”,第1889行,可选
引发ArgumentError(操作,消息%explicit\u arg)
argparse.ArgumentError:参数-h/--help:忽略显式参数“elp”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“arg.py”,第18行,在
args=parser.parse_args()
parse_args中的文件“/usr/lib/python3.6/argparse.py”,第1743行
args,argv=self.parse\u known\u args(args,名称空间)
文件“/usr/lib/python3.6/argparse.py”,第1782行,位于parse\u known\u args中
自我错误(str(err))
文件“/usr/lib/python3.6/argparse.py”,第2400行出错
自我打印使用(_sys.stderr)
文件“/usr/lib/python3.6/argparse.py”,第2370行,打印使用
self.\u打印消息(self.format\u用法(),文件)
文件“/usr/lib/python3.6/argparse.py”,第2336行,格式为
返回格式化程序。格式化\u帮助()
文件“/usr/lib/python3.6/argparse.py”,第291行,格式为“帮助”
help=self.\u root\u section.format\u help()
文件“/usr/lib/python3.6/argparse.py”,第222行,格式为“帮助”
item_help=join([func(*args)表示func,args表示self.items])
文件“/usr/lib/python3.6/argparse.py”,第222行,在
item_help=join([func(*args)表示func,args表示self.items])
文件“/usr/lib/python3.6/argparse.py”,第308行,格式为
用法=用法%dict(prog=self.\u prog)
KeyError:'arg.py'

关键字to
ArgumentParser
只允许
%(prog)s
格式说明符<代码>%(arg.py)s
不是有效的格式说明符。要么写
usage='arg.py[options]'
要么写
usage='%(prog)s[options]'

有多少未指明的错误[你]似乎无法纠正,一旦你正确拼写“argument”?@jwodder我已经纠正了拼写,谢谢你编辑了我的帖子。当我尝试键入
python3 myprogramname.py-help
时,仍然会在args=parser.parse_args()文件/usr/lib/python2.7/argparse.py”第1701行的parse_args args,argv=self.parse_known_args(args,名称空间)中出现类似
File“arg.py”的错误
其中arg.py是我脚本的名称。请将完整的错误消息粘贴到您的问题中。为什么您不能将解析器实例化为
parser=argparse.ArgumentParser()
?@dedObed,它似乎解决了错误,但我想自定义“usage=”行。