通过 Python 的子进程模块使用 dd 命令
Using dd command through Python's subprocess module
通过 Python 的子进程模块,我试图捕获 dd 命令的输出。
这是代码片段:
r = subprocess.check_output(['dd', 'if=/Users/jason/Desktop/test.cpp', 'of=/Users/jason/Desktop/test.out'])
然而,当我做类似
的事情时
print r
我得到一个空行。
有没有办法将 dd 命令的输出捕获到某种数据结构中,以便我以后可以访问它?
我本质上想要的是将下面的输出存储到一个列表中,这样我以后就可以对字节数进行操作。
1+0 records in
1+0 records out
4096 bytes transferred in 0.000409 secs (10011579 bytes/sec)
dd
不会向标准输出输出任何内容,因此您的结果是正确的。但是,它确实输出到 stderr。传入stderr=subprocess.STDOUT
得到stderr输出:
>>> o = subprocess.check_output(
['dd', 'if=/etc/resolv.conf', 'of=r'], stderr=subprocess.STDOUT)
>>> print(o)
b'0+1 records in\n0+1 records out\n110 bytes (110 B) copied, 0.00019216 s, 572 kB/s\n'
通过 Python 的子进程模块,我试图捕获 dd 命令的输出。 这是代码片段:
r = subprocess.check_output(['dd', 'if=/Users/jason/Desktop/test.cpp', 'of=/Users/jason/Desktop/test.out'])
然而,当我做类似
的事情时print r
我得到一个空行。
有没有办法将 dd 命令的输出捕获到某种数据结构中,以便我以后可以访问它?
我本质上想要的是将下面的输出存储到一个列表中,这样我以后就可以对字节数进行操作。
1+0 records in
1+0 records out
4096 bytes transferred in 0.000409 secs (10011579 bytes/sec)
dd
不会向标准输出输出任何内容,因此您的结果是正确的。但是,它确实输出到 stderr。传入stderr=subprocess.STDOUT
得到stderr输出:
>>> o = subprocess.check_output(
['dd', 'if=/etc/resolv.conf', 'of=r'], stderr=subprocess.STDOUT)
>>> print(o)
b'0+1 records in\n0+1 records out\n110 bytes (110 B) copied, 0.00019216 s, 572 kB/s\n'