Я пытаюсь создать сценарий python, который будет клонировать (образ ISO) один USB-накопитель на другой, используя dd if=/dev/sda of=/dev/sdb
Вот моя проблема: Я хочу создать индикатор выполнения, показывающий, что сделано.
Я пробовал:
- Глядя на место для хранения на втором USB-накопителе, но это не работает, потому что образ ISO сканирует также неиспользуемое пространство
- Добавляя команду
status=progress
к dd
, я могу получить прогресс в терминале, но я не могу понять, как получить доступ к stdout из python. Я пробовал subprocess.Popen,run(stdout = PIPE)
с shell = True
и без *, читая process.stdout
с .read()
, .read(1)
, .readline()
или communicate()
. У меня ничего не сработало. (https://www.endpoint.com/blog/2015/01/28/getting-realtime-output-using-python)
Я вижу прогресс в оболочке python, но функция .read()
всегда застревает.
Часть кода, которая меня беспокоит:
comm = 'sudo dd if=/dev/sda of=/dev/sdb'
cloning = subprocess.Popen(shlex.split(comm),stdout = PIPE,text = True)
while True:
print(cloning.stdout.read())
Мне нужно что-то, что работало бы примерно так:
while True:
progress = cloning.stdout.read()
update_bar(progress)
Я использую python 3.7 на Raspberry
Спасибо за помощь