2017-07-29 53 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' –