2017-07-29 24 views
0

我想将两个变量传递给另一个python文件,我不想将它作为子进程启动。
我希望两个进程分开运行,因为file1有很多计算要做,并且不能等待file2的操作完成。用变量执行python文件

FILE1.PY

include os 
name="one" 
status="on" 
os.system('F:\PythonSub\file2.py' name status) 

FILE2.PY

include sys 
name=sys.argv[0] 
send=sys.argv[1] 
print(send, name) 

上面的代码返回

send=sys.argv[1] 
IndexError: list index out of range 

我到底做错了什么?

+0

的[我怎样才能从异步运行的Python外部命令?(https://stackoverflow.com/questions/636561/how-can-i-run-an可能的复制-external-command-asynchronously-from-python) – hnefatl

回答

1

试试这个

import os 
name="one" 
status="on" 
os.system('F:\PythonSub\file2.py %s %s' % (name status)) 
+0

include?或者我想念一个新功能 – PRMoureu

+0

应该是'import' – JacobIRR

+0

啊刚刚复制粘贴OP!编辑。谢谢 – gipsy

3

使用subprocess模块(该链接上的示例)。它支持异步启动进程(其中os.system不是),并传递参数作为参数。看起来你需要这样的东西:

subprocess.call(["F:\PythonSub\file2.py", name, status]) 

你可能想,如果你想从过程输出的stdin/stdout流重定向,以及shell选项可能是有用的。

编辑:这是错误的,因为subprocess.call同步调用,而不是异步。您应该使用链接副本中描述的方法。

+0

而不是重定向'stdout'流来获取输出,你应该使用'subprocess.check_output'而不是'subprocess.call' –