Запуск дд с питона и получение прогресса - PullRequest
0 голосов
/ 25 февраля 2019

это мой код, но он не работает.Команда 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 голосов
/ 25 февраля 2019

Я нашел решение.

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

Спасибо всем за ответы.

0 голосов
/ 25 февраля 2019

Взгляните на это: ДД с прогрессом в Python

...