我需要创建一个名为extractGenes.py
的程序命令行参数需要采用2 OR 3参数:
-s
是一个可选参数或开关,表示用户wwants拼接的基因序列(内含子被删除)。用户不必提供这个(意味着他想要整个基因序列),但是他确实提供了它然后它必须是第一个参数
输入文件(带基因)
输出文件(程序将创建存储fasta文件的位置
该文件包含以下行:
NM_001003443 chr11 + 5925152 592608098 2 5925152,5925652, 5925404,5926898,
但是,我不确定如何将-s
可选参数包含在启动函数中。
所以我开始:
getGenes(-s, input, output):
fp = open(input, 'r')
wp = open(output, "w")
但不确定如何加入-s
。
答案 0 :(得分:3)
这种情况很简单,可以直接使用sys.argv:
import sys
spliced = False
if '-s' in sys.argv:
spliced = True
sys.argv.remove('-s')
infile, outfile = sys.argv[1:]
或者,您也可以使用更强大的工具(如argparse和optparse)来生成命令行解析器:
import argparse
parser = argparse.ArgumentParser(description='Tool for extracting genes')
parser.add_argument('infile', help='source file with the genes')
parser.add_argument('outfile', help='outfile file in a FASTA format')
parser.add_argument('-s', '--spliced', action='store_true', help='remove introns')
if __name__ == '__main__':
result = parser.parse_args('-s myin myout'.split())
print vars(result)
答案 1 :(得分:2)
Argparse是一个python库,它将为您处理可选参数。 http://docs.python.org/library/argparse.html#module-argparse
答案 2 :(得分:0)
尝试这样的事情:
def getGenes(input, output, s=False):
if s:
...
else:
...
如果输入2个参数,则s为False; getGenes(输入,输出)
如果使用3个参数调用getGenes(),则s将是第3个参数,因此在这种情况下使用任何非False值调用它将产生else子句。