Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python optpass选项操作_Python_Arguments_Action_Option_Optparse - Fatal编程技术网

Python optpass选项操作

Python optpass选项操作,python,arguments,action,option,optparse,Python,Arguments,Action,Option,Optparse,我正在使用optparse,我正在编写一个包含3个命令行参数的脚本。第一个(-qtype)指定是需要从本地文件还是从web调用信息。根据这一点,第二个参数(-qname)要么是一个核苷酸字符串,要么是一个FASTA文件名。第三个参数(-output)是输出文件名 我的问题是,是否有一个optpasse选项操作可以用于第一个参数(因为标准的“存储”、“附加”等在本例中不适用) 以下是我到目前为止的情况:(可能有错误) 我有问号,[…]我对如何解决这个问题感到困惑 非常感谢您的帮助 选项1:使用参数

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

我的问题是,是否有一个optpasse选项操作可以用于第一个参数(因为标准的“存储”、“附加”等在本例中不适用)

以下是我到目前为止的情况:(可能有错误)

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

非常感谢您的帮助

选项1:使用参数而不是选项 这可能是一种可行的方法,因为您可能需要用户的所有三个输入才能正常运行

根据

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

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

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:无论如何都要使用选项 用法示例:

program.py --qtype web --qname blah --output blah

我将非常感谢任何有助于找到适当答案的人。谢谢大家!!如果您发布您当前拥有的OptPass代码,我们可能会更容易理解您的问题。是否允许按此顺序发布
program.py-qname foo-qtype web-output file.bin
?非常感谢您的回答!这很有帮助。那么,我应该写一个函数来指定如何处理字符串吗?(在这种情况下,我想从NCBI获取序列,给定它们的ID#s-在“web”中,或者加载FASTA文件-在“local”中)。我认为这是有意义的。我省略了很多输入检查和应用程序代码,因为你的问题似乎更多的是关于使用OptPass。是的。我只是想澄清一下,你也有类似的想法。再次感谢!
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