3

我需要创建一个名为 extractGenes.py 的程序

命令行参数需要取 2 OR 3 个参数:

  1. -s是一个可选参数或开关,表示用户想要拼接的基因序列(去除内含子)。用户不必提供这个(意味着他想要整个基因序列),但他确实提供了它,那么它必须是第一个参数

  2. 输入文件(带有基因)

  3. 输出文件(程序将在其中创建以存储 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.

4

3 回答 3

3

这种情况很简单,可以直接使用sys.argv

import sys

spliced = False
if '-s' in sys.argv:
    spliced = True
    sys.argv.remove('-s')
infile, outfile = sys.argv[1:]

或者,您还可以使用更强大的工具,如argparseoptparse来生成命令行解析器:

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)
于 2012-04-21T16:51:14.867 回答
2

Argparse 是一个 python 库,它将为您处理可选参数。 http://docs.python.org/library/argparse.html#module-argparse

于 2012-04-21T16:49:47.583 回答
0

尝试这样的事情:

def getGenes(input, output, s=False):
    if s:
        ...
    else:
        ...

如果输入 2 个参数,则 s 将为 False;获取基因(输入,输出)

如果您使用 3 个参数调用 getGenes(),则 s 将是第三个参数,因此在这种情况下,使用任何非 False 值调用它都会产生 else 子句。

于 2012-04-21T16:50:55.963 回答