2012-04-21 12 views
3

は、2つのまたは3つのパラメータを取る必要がある:オプションのパラメータPython?私は、コマンドラインパラメータextractGenes.py</p> <p>と呼ばれるプログラムを作成する必要が

  1. -s、ユーザがwwantsことを示す、オプションのパラメータ、またはスイッチであります(イントロンを除去した)。ユーザーは、彼がそれを提供しない、それは(遺伝子との)最初のパラメータ

  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を含める方法についての不明な点です。

答えて

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) 
+0

これは私が探していたものです。 –

+0

助けてくれてありがとう:-) –

+0

@RaymondHettinger、とてもいいです、前にargparseを使っていません。ちなみに、私はPyConでの簡単なAIについての話を見ましたが、それは素晴らしいものでした。 – zallarak

2

Argparseは、あなたのためのオプションのパレメーターを世話するpythonライブラリです。 http://docs.python.org/library/argparse.html#module-argparse

+0

私はPythonには新しく、プログラムにargparseを組み込む方法が不明です。私は上記のコメントを理解していますが、最初のパラメータに-sが必要なので、条件付きにする方法を理解できません... –

+1

@PatrickCampbell - dmは答えを入力していましたが、彼が示唆した図書館(実際に**このような場合に使用する**図書館...) – mac

+0

ありがとう!!!!!! –

0

はこのような何か試してください:あなたの入力2つのパラメータ場合は、sがFalseになります

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

を。 getGenes(入力、出力)

3つのパラメータでgetGenes()を呼び出すと、sが3番目のパラメータになります。この場合、False以外の値で呼び出すとelse節が生成されます。

+0

問題は何であれ、-sは最初のパラメータでなければなりません。 –

+0

@PatrickCampbellなぜ、コマンドラインでの引数の順序は、プログラム内の関数の引数の順序を反映しなければならないのですか? – delnan

+0

私は実際に注文が重要な理由を知らない、私はこのようにする必要はなかったと思うが、私は指示された... –

関連する問題