我正在使用optparse,我正在编写一个包含3个命令行参数的脚本。第一个(-qtype)指定是否需要从本地文件或Web调用信息。然后根据这个,第二个参数(-qname)是一串核苷酸,或FASTA文件名。第三个参数(-output)是输出文件名。
我的问题是,是否存在我可以用于第一个参数的optparse选项操作(因为标准的“store”,“append”等在这种情况下不适用)。
到目前为止,这是我所拥有的:(可能存在错误)
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()
我有问号和[...]我对如何解决这个问题感到困惑。
非常感谢任何帮助!
答案 0 :(得分: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
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