簡體   English   中英

使用參數執行子流程python腳本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM