如何使用来自另一个python文件的参数执行一个python文件而不在命令/终端行上传递参数?

时间:2016-08-13 09:48:24

标签: python opencv

我在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)

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是你如何做到的。您需要稍微修改上面的代码以形成以下内容

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)

使用的参考:https://docs.python.org/2/library/argparse.html

现在,您可以从另一个文件中提供自己的列表。要从其他文件中调用它,您需要执行以下操作

#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)

我认为这就是你问的一切!