Python 我可以将此程序的输出重定向到脚本吗?

Python 我可以将此程序的输出重定向到脚本吗?,python,stdin,Python,Stdin,我正在运行一个管理usb设备的二进制文件。二进制文件在执行时将结果输出到我指定的文件 python中有没有办法将二进制文件的输出重定向到我的脚本而不是文件?只要这行代码运行,我就必须打开文件并获取它 def rn_to_file(comport=3, filename='test.bin', amount=128): os.system('capture.exe {0} {1} {2}'.format(comport, filename, amount)) 它也不适用于子流程 from

我正在运行一个管理usb设备的二进制文件。二进制文件在执行时将结果输出到我指定的文件

python中有没有办法将二进制文件的输出重定向到我的脚本而不是文件?只要这行代码运行,我就必须打开文件并获取它

def rn_to_file(comport=3, filename='test.bin', amount=128):
    os.system('capture.exe {0} {1} {2}'.format(comport, filename, amount))
它也不适用于子流程

from subprocess import check_output as qx
>>> cmd = r'C:\repos\capture.exe 3 text.txt 128'
>>> output = qx(cmd)
Opening serial port \\.\COM3...OK
Closing serial port...OK
>>> output
b'TrueRNG Serial Port Capture Tool v1.2\r\n\r\nCapturing 128 bytes of data...Done'

文件的实际内容是一系列0和1。这并不是将输出重定向到文件给我,而是将打印出来的内容作为输出。

看起来您使用的是Windows,它有一个特殊的保留文件名CON,这意味着要使用控制台,模拟on*nix将是/dev/stdout

所以试试这个:

subprocess.check_output(r'C:\repos\capture.exe 3 CON 128')
您可能需要在其中使用shell=True,但我怀疑您不需要

其思想是让程序写入虚拟文件CON(实际上是stdout),然后让Python捕获它


另一种选择是CreateNamedPipe,它允许您创建自己的文件名并从中读取,而不需要磁盘上有实际的文件。更多信息,请参见:

os.system->SUBSPROCESS…@user202729看起来对我不起作用。谢谢,这起作用了,但它没有将CON输出分配给我的变量,它只是在命令行>>>output=chr'C:\repos\rng\rngcapture.exe 3 CON 8'中打印出来并对其进行测试,shell=True>>>打开串行端口\\.\COM3…正常8Γ▀ä┌QQ关闭串口……这些中间的奇怪符号来自设备的1和0的输出。这就是文件中的内容。所以对于标准输出b/c,我像你说的那样使用CON,但我真的不知道如何在变量中捕获它。它完成的报告已保存在输出中。我应该使用CreatenNmedPipe来捕获标准输出吗?