2016-08-13 5 views
-5

私はPythonで引数parserを持つデフォルトのコードを持っており、コマンドラインでそれらの引数を自分自身で渡す必要がありますが、引数を渡す必要はありません。そのファイルに書き込まれた引数を持つ別のpythonファイルまたは私はコマンドラインで自分自身でこれらの引数を書いてほしくない。次のようにコードを解析コマンド/端末行に引数を渡さずに別のpythonファイルの引数を使ってpythonファイルを実行する方法は?

私の引数は次のとおりです。

if __name__ == "__main__": 
    parser = argparse.ArgumentParser() 
    parser.add_argument('-i', type=str, nargs='+', help="Enter the filenames with extention of an Image") 
    arg=parser.parse_args() 

    if not len(sys.argv) > 1: 
    parser.print_help() 
    exit() 

私の機能は

def Predict_Emotion(filename): 
     print "Opening image...." 
     try: 
      img=io.imread(filename) 
      cvimg=cv2.imread(filename) 
    except: 
      print "Exception: File Not found." 
      return 

され、任意の助けをいただければ幸いです

for filename in arg.i: 
    Predict_Emotion(filename) 

としての私の実行行です。

+2

これは非常に不明です。あなたが関数に引数を渡したいのであれば、それをやるだけで何が止められますか? –

+0

初心者で説明してください! @DanielRoseman –

+1

私が言ったように私はあなたが何を求めているのか明確ではないので、私はできません。 –

答えて

0

これはあなたのやり方です。 https://docs.python.org/2/library/argparse.html

今は別のファイルからそれを独自のリストを与えることができます:あなたは少し使用し、次の

import sys, argparse 

def run_function (lista): 
    parser = argparse.ArgumentParser() 
    parser.add_argument('-i', type=str, nargs='+', help="Enter the filenames with extention of an Image") 
    arg=parser.parse_args(lista) 
    if (len(sys.argv) <= 1): 
     parser.print_help() 
     exit() 

if __name__ == "__main__": 
    run_function (sys.argv) 

リファレンスを形成するために、上記のコードを変更する必要があります。他のファイルからそれを呼び出すには、私はそれはあなたが尋ねたすべてのものだと思う以下

#These below two lines are not necessary if stating python in directory the script is in, or if it is already in your Python Path 
import sys 
sys.path.insert(0, "path to directory script is in") 
#Below lines are now necessary 
import your_script #NOTE this is the name of your file without the .py extention on the end 
list_of_files = ["file1", "file2"] 
your_script.run_function(list_of_files) 

を行う必要があります!

+0

ありがとうございます。私はあなたに戻ってお試しください –

+0

N.私はまだこれについていくつかのエラーがあります。あなたは適切に実装するためにホを説明することができます。 –

+0

申し訳ありません。 (len(sys.argv)= <1)の代わりに上記のコードにタイプミスがありました:if(len(sys.argv)<= 1)サインはです。 ... –

関連する問題