我可以将这个程序的输出重定向到脚本吗?
can I redirect the output of this program to script?
我是 运行 一个管理 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
,这意味着使用控制台(*nix 上的模拟是 /dev/stdout
)。
所以试试这个:
subprocess.check_output(r'C:\repos\capture.exe 3 CON 128')
您可能需要在其中使用shell=True
,但我怀疑您不需要。
想法是让程序写入虚拟文件 CON
,它实际上是标准输出,然后让 Python 捕获它。
另一种方法是 CreateNamedPipe()
,它可以让您创建自己的文件名并从中读取,而无需在磁盘上创建实际文件。有关更多信息,请参阅:createNamedPipe in python
我是 运行 一个管理 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
,这意味着使用控制台(*nix 上的模拟是 /dev/stdout
)。
所以试试这个:
subprocess.check_output(r'C:\repos\capture.exe 3 CON 128')
您可能需要在其中使用shell=True
,但我怀疑您不需要。
想法是让程序写入虚拟文件 CON
,它实际上是标准输出,然后让 Python 捕获它。
另一种方法是 CreateNamedPipe()
,它可以让您创建自己的文件名并从中读取,而无需在磁盘上创建实际文件。有关更多信息,请参阅:createNamedPipe in python