[英]Execute subprocess python script with arguments
我有一個python3腳本,它使用subprocess.Popen
調用其他python3腳本。
第一個腳本創建第二個腳本所需的python對象,第二個腳本將使用同一對象運行幾次。
現在看起來像這樣:
for x in range(0,10):
pid2 = subprocess.Popen([sys.executable, "try2.py"])
但是我想將第一個腳本中創建的python對象傳遞給子進程。 這可能嗎? 還是只能傳遞字符串參數?
謝謝。
根據文檔, Args應該是字符串或字符串序列。 但是,如果確實要傳遞對象,則可以將對象序列化為JSON,然后在第二個腳本中反序列化它以檢索原始對象。 然后,您可以繼續執行第二個腳本的操作
我有一個使用subprocess.Popen調用其他python3腳本的python3腳本
哎喲
第一個腳本創建第二個腳本所需的python對象,第二個腳本將使用同一對象運行幾次。
ouch ^ 2
但是我想將第一個腳本中創建的python對象傳遞給子進程。 這可能嗎? 還是只能傳遞字符串參數?
您只能傳遞字符串參數,但是可以在傳遞對象之前對其進行序列化。
您介意分享更多有關您要解決的問題的信息,以便我們提出結構合理的可維護解決方案嗎?
也演示了在python中做如此扭曲的事情是多么容易:):
python3:
try1.py:
import subprocess
import sys
import pickle
import base64
class X:
def __init__(self):
self.a = 2
a = X()
a.a = "foobar"
subprocess.call([sys.executable, "try2.py", base64.encodestring(pickle.dumps(a))])
try2.py:
import sys
import pickle
import base64
class X:
def __init__(self):
self.a = 2
x = pickle.loads(base64.decodestring(bytes(sys.argv[1], "ascii")))
print(x.a)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.