从python运行dd并获得进度

时间:2019-02-24 21:48:16

标签: python pipe popen dd

这是我的代码,但是不起作用。 dd命令已执行,但没有输出输出。 注意:如果我将stdout更改为常规文本文件,则dd输出将在dd打印输出的每个进度行处逐渐保存dd输出。

想法? 问候。

import sys
from subprocess import Popen, STDOUT, PIPE

with Popen(["dd", "if=/dev/cdrom", "of=/tmp/prova.iso", "bs=2048", "count=499472", "status=progress"], stderr=STDOUT, stdout=PIPE) as proc:
    print("ok")
    print(proc.stdout.read())

2 个答案:

答案 0 :(得分:0)

看看这个: dd with progress in python

答案 1 :(得分:0)

我找到了解决方法。

import subprocess
import sys

cmd = ["dd", "if=/dev/cdrom", "of=/tmp/iso.iso", "bs=2048", "count=499472", "status=progress"]

process = subprocess.Popen(cmd, stderr=subprocess.PIPE)

line = ''
while True:
    out = process.stderr.read(1)
    if out == '' and process.poll() != None:
        break
    if out != '':
        s = out.decode("utf-8")
        if s == '\r':
            print(line)
            line = ''
        else:
            line = line + s

谢谢大家的回答。