簡體   English   中英

如何在Python中讀取傳遞給子流程管道的數據

[英]How to read data passed to a subprocess pipe in Python

我試圖創建一個與主應用程序並行運行的工作程序子進程。 為此,我使用了subprocess.Popen和內置的PIPE。

    p = subprocess.Popen( cmd , stdin=subprocess.PIPE, stdout=subprocess.PIPE, bufsize=1, universal_newlines=True)

    time.sleep(.5)

    data = p.stdout.readline()

    for i in range(10): # repeat several times to show that it works
        p.stdin.write("test")
        line = p.stdout.readline()
        print(line) # read output

我能夠將stdout PIPE上的數據接收為可變數據 ,但是循環中的read語句始終返回空字符串。

我的子過程非常簡單:

print("Its working", flush=True)
while(True):
    r=input()
    print("Its working", flush=True)

看來我的子進程無法讀取通過stdin發送的任何數據。 如果我刪除了r = input()命令,並且僅不斷地打印一個字符串,它會工作,並且我會多次收到該行,但是當我嘗試通過input()檢查傳入的字符串時,它永遠不會得到它。

我是否嘗試錯誤地獲取傳入PIPE上的數據,如果是,該怎么辦? 我嘗試了其他選擇,例如:

r = sys.stdin.buffer.read()
r = sys.stdin.buffer.readline()
r = sys.stdin.read()
r = sys.stdin.readline()

但它們都不起作用。

我從主程序那邊錯過了\\ n。 感謝JohanL指出這一點。 現在一切正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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