我有一個簡單的腳本,用於在測試中將我們的軟件(Moab Workload Manager)的CLI調用自動化,以避免必須使用'--xml'標誌來獲取xml輸出然後管理整齊,以便易讀。它使用subprocess.Popen
調用來運行該命令,然後使用str.strip()
和str.replace()
對返回的xml進行小的清理,以便於直觀地檢查。有問題的代碼是在這裏:Python 3 subprocess.PIPE輸出錯誤
cmdString = "%s --xml" % cmd
cmdList = cmdString.split()
cmdRun = subprocess.Popen(cmdList,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
crOut,crErr = cmdRun.communicate()
xmlOutput = crOut.strip().replace("><",">\n<").replace("\" ","\"\n")
當我運行這個(我最近升級我的Python到Python 3.1.2),我現在得到以下錯誤:
Traceback (most recent call last):
File "/usr/local/bin/xmlcmd", line 50, in <module>
runXMLCmd(getCmd())
File "/usr/local/bin/xmlcmd", line 45, in runXMLCmd
xmlOutput = crOut.strip().replace("><",">\n<")
TypeError: expected an object with the buffer interface
它似乎是溝通()調用返回字節數組,但在python解釋器,如果我做
dir(bytes)
我可以仍然看到strip()和replace()函數。任何人都知道如何做到這一點?
謝謝。