我試圖從我運行在同一腳本中的tcp服務器讀取數據。我能夠發送一個命令並讀取其輸出,但最後(在讀取所有輸出之後)它看起來像程序在readline中掛起,我嘗試了幾乎所有的解決方案here和here但仍然掛起。Python子進程readline在讀取所有輸入後掛起()
大多數這些解決方案提議檢查readline的輸出是否爲none,但在我的情況下,程序永遠不會從上次讀取返回並掛在那裏。
編輯: TCP服務器不在我的控制,或者說我只是要測試服務器腳本所以不能對其進行修改。另外,是否有可能使用python發送命令到運行服務器而不使用子進程?任何更好的選擇?
def subprocess_cmd(command):
process=subprocess.Popen(command,stdin=subprocess.PIPE,stderr=subprocess.STDOUT,stdout=subprocess.PIPE, shell=True)
for cmd in ['python3 -u tcp_server.py 123 port1']:
subprocess_cmd(cmd)
process.stdin.write('command like print_list')
process.stdin.flush()
while True:
line=process.stdout.readline()
if line == '':
break
你必須發佈你的代碼,所以我們可以提供幫助。 –
@ Jean-François添加了代碼 –