1

我从 optparse 更改为 argparse 但是当我尝试运行它时,我收到以下错误:

    if not option_string[0] in self.prefix_chars:
IndexError: string index out of range

我的代码是:

usage = "%prog -f <fasta TFs> -a <database all> -s <database small> -d <pfam database> [options]"
version = "1.0.1"
description = " "
epilog = " "\
         " "
parser = argparse.ArgumentParser(usage=usage, description=description,
                      version="%prog "+version, epilog=epilog)

# options for running the program
# TF file
parser.add_argument("-f", "",  dest="TF", metavar="<file>",
                        help="input file with transcription factors")
parser.set_defaults(fasta=None)

我找不到这个错误来自哪里,如何解决这个问题?

4

2 回答 2

3

在 argparse 中,您不能将空参数字符串传递给 add_argument。argparse 试图在您传递的空字符串 ("") 中查找有效的 prefix_char(例如 "-" 或 "--"),从而导致错误。试试这个:

parser.add_argument("-f",  dest="TF", metavar="<file>",
                    help="input file with transcription factors")
于 2013-08-30T22:18:57.540 回答
2

得到这个错误的唯一方法是请求一个不存在的索引——在这种情况下,它option_string必须是空的。

于 2011-11-19T00:29:18.533 回答