【发布时间】:2019-10-10 08:10:46
【问题描述】:
我需要在我的 python 代码中从子进程中取出 std,这样我就可以在我的 python 代码中进一步处理输出。
我在 python 中有以下代码来获取标准输出,但输出变量有一个空值。
import subprocess
import json
import time
class RunProcess:
waitTime = 0
def SetWaitTime(self, waitingTimeInMSec):
self.waitTime = waitingTimeInMSec
def Run(self, filePath, arguments):
if self.waitTime > 0:
time.sleep(self.waitTime)
process = subprocess.Popen(filePath + arguments, stdout=subprocess.PIPE, stderr=None, shell=True)
output = process.communicate()[0]
print(output)
if __name__ == '__main__':
p = RunProcess()
p.Run("C:\Projects\ATR220-Test\ATR220_Python_Tester\DeviceLoad\SerialReadWrite\srw.exe", " list=PID_0180")
但是当我从 Windows 命令提示符运行时,应用程序将我的工作室提供给我,这意味着我正在调用的应用程序没有问题。所以我怀疑我的python代码中的问题。
从 Windows 命令提示符运行 exe 时的输出。
C:\>C:\Projects\ATR220-Test\ATR220_Python_Tester\DeviceLoad\SerialReadWrite\srw.exe list=PID_0180
C:\>
{
"list": [
{
"availability": "2",
"name": "COM3",
"friendlyname": "USB Serial Device (COM3)",
"pnpdevicepath": "USB\\VID_0DB5&PID_0180&MI_02\\7&8A6C74D&0&0002"
}
],
"status": {
"value": 0,
"description": "ok"
}
}
【问题讨论】:
-
“工作室”?我想你可能想说“标准输出”
-
感谢并更正
-
检查 stderr 和 process.returncode 应该是 0。你需要转义反斜杠:
p.Run("C:\\Projects\\...")
标签: python subprocess output