从另一个带有参数的python脚本中调用python脚本不起作用

时间:2018-07-16 11:58:39

标签: python arguments call

我很清楚有多个线程正在处理此问题,因为我使用它们是为了自学如何做。但是,对我来说,它不起作用,我想知道是否有人可以帮助我找到我的错误。

所以我有一个程序(我们称它为prog1),它为每个字符串变量都调用一个脚本,如下所示:

os.system(r'C:\Users\user\docs\bla\script.py %s'%variable)

在script.py中,我现在只想通过禁用所有代码来测试此调用是否有效,而只是这样做:

def main(string):
    print(string)
    root

if __name__ == "__main__":
    print('I got executed')
    main(sys.argv[1])

问题是,如果我执行prog1,则什么都不会发生。不会出错-它会一直运行,并且控制台会弹出一秒钟。但是,什么也没发生-没有字符串被打印。如果我直接执行script.py,虽然可以。

编辑:我通过使用以下命令使它与子进程包一起执行而没有错误:

subprocess.call(r'C:\...\script.py' %s' %variable,shell = True)

但是,问题仍然存在-没有任何反应。或者好吧,我现在注意到,在“背景”窗口中弹出一个窗口,询问我要使用哪个程序来执行以“ .py”结尾的文件,但这对我没有帮助,因为我想在控制台中执行:(

1 个答案:

答案 0 :(得分:1)

尝试使用subprocess模块,它允许更灵活的参数设置和其他配置更改:

import subprocess
subprocess.check_call(["python.exe", r"C:\Users\user\docs\bla\script.py", variable])

执行时:

subprocess.check_call(["python", r"C:\Users\user\docs\bla\script.py", "Blue"])
  

我被处决

     

蓝色

有关子流程的更多信息:https://docs.python.org/2/library/subprocess.html