2017-02-01 27 views
0

私はargvを使用して、端末でPythonスクリプトに一意の引数を渡します。同じプログラムを複数の固有ファイルで実行する場合に非常に便利です(このプログラムは、特定のものについてxmlファイルを解析します)。私は独特の目的を果たす3つの異なるプログラムを作りました。端末でPythonを実行しているときにArgvを使用するとエラーが発生する

私のpythonの実際の実行中のインスタンス内で「インポート」を使用して、ファイルを1つずつを行くことができるように、私は1つの.pyファイルに私のプログラムを集約しています:

>>>import xml 
>>>xml.a() 
>>>xml.b() 
>>>xml.c() 

はどのようにして渡すことができますこれらのプログラムへの議論は途中で?この方法でプログラムを呼び出した後に引数を置くと、構文エラーが発生します。

>>>xml.a() file1.xml file1.csv 
     ^
>>>SyntaxError: invalid syntax 
+0

あなたがプログラムを実行するためにsys.argv'は '' 1 'と呼ばれる機能を持っている...とすることはできませんPythonインタプリタの外側にあります。インタプリタには、パラメータのみがあります。 –

+0

ありがとうございます。変更された関数名。簡潔さのために1,2,3のみ使用されています。 – James

答えて

2

あなたが(これらは「パラメーター」see documentationと呼ばれている)、括弧の間にそれらを置くことによって、Pythonで関数に引数を渡します。だから、彼らは、引数を取る(というよりもsys.argvから読み取る)ことができるようにあなたの機能を変更する必要があり、その後のような機能を実行します:

my_library.py

def function1(filename): 
    print filename 

通訳

>>> import my_library 
>>> my_library.function1("file1.xml") 
>>> file1.xml 

sys.argvのように)関数が不定数の引数を処理できるようにするには、残りのパラメータをリスト(see documentation)にキャッチするために、引数リストの末尾に*の構文を使用します。たとえば、次のように

my_library.py

def function1(*filenames): 
    for filename in filenames: 
     print filename 

通訳

>>> import my_library 
>>> my_library.function1("file1.xml", "file2.csv", "file3.xml") 
file1.xml 
file2.csv 
file3.xml 
+0

ありがとうございます。私はその文書を読むでしょう。 – James

関連する問題