0

我正在使用 optparse,并且正在编写一个带有 3 个命令行参数的脚本。第一个 (-qtype) 指定是需要从本地文件还是从 Web 调用信息。然后根据这一点,第二个参数 (-qname) 要么是一串核苷酸,要么是一个 FASTA 文件名。第三个参数(-output)是输出文件名。

我的问题是,我是否可以将 optparse 选项操作用于第一个参数(因为标准的“存储”、“附加”等在这种情况下不适用)。

这是我到目前为止所拥有的:(它可能带有错误)

import optparse

if False:#__name__== '__main__':
    # parser object for managing input options
    parser = optparse.OptionParser()

    parser.add_option( '-qtype' ,  action = ‘?’ )
    parser.add_option( '-qname' , action = ‘?’ , […] )
    parser.add_option( '-output' , action = ‘store’ , type = ‘?’ , dest = ‘filename’ )

    # load the inputs
    args = [‘-qtype’ , ‘-qname’ , ‘-output’]
    (options , args) = parser.parse_args()

我有问号和[...],我对如何解决这个问题感到困惑。

任何帮助是极大的赞赏!

4

1 回答 1

1

选项 1:使用参数而不是选项

这可能是一种可行的方法,因为您可能需要用户的所有三个输入才能正常运行。

根据optparse 文档

一个程序应该能够在没有任何选项的情况下正常运行

在这种情况下,您的解决方案会喜欢

import optparse
import sys

if __name__ == '__main__':
    parser = optparse.OptionParser()

    (options, args) = parser.parse_args()

    if len(args) != 3:
        print 'please specify all required arguments - qtype qname output_file'
        sys.exit(-1)

    qtype, qname, output = args

    if qtype == 'web':
        pass
    elif qtype == 'local':
        pass
    else:
        print 'no qtype specified! exiting'
        sys.exit(-1)

然后,您可以将所有参数用作字符串并直接处理它们或将它们转换为 web 请求的文件/url。

示例命令行:

program.py  web  blah blah

选项 2:仍然使用选项

import optparse
import sys

if __name__ == '__main__':
    parser = optparse.OptionParser()

    parser.add_option('--qtype', action='store', dest='qtype', type='string')
    parser.add_option('--qname', action='store', dest='qname', type='string')
    parser.add_option('--output', action='store', type='string', dest='filename')

    (options, args) = parser.parse_args()
    if options.qtype == 'web':
        pass
    elif options.qtype == 'local':
        pass
    else:
        print 'no qtype specified! exiting'
        sys.exit(-1)

示例用法:

program.py --qtype web --qname blah --output blah
于 2013-10-22T03:13:05.730 回答