首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Optparse选项操作

Optparse选项操作
EN

Stack Overflow用户
提问于 2013-10-22 01:50:40
回答 1查看 1.7K关注 0票数 0

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

我的问题是,如果有一个optparse选项操作,我可以使用第一个参数(因为标准的“存储”,“附加”等不适用于本例)。

到目前为止,我的情况如下:(很可能有错误)

代码语言:javascript
复制
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()

我有问号还有..。我正纠结于如何处理这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-22 03:13:05

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

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

根据Opt解译文档

一个程序应该能够在没有任何选择的情况下运行得很好。

在这种情况下,您的解决方案希望

代码语言:javascript
复制
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。

示例命令行:

代码语言:javascript
复制
program.py  web  blah blah

选项2:无论如何使用选项

代码语言:javascript
复制
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)

示例用法:

代码语言:javascript
复制
program.py --qtype web --qname blah --output blah
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19507724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档