Я пытаюсь сделать простой скрипт для автоматизации и регистрации синхронизации через Unison. Я также использую subprocess.Popen вместо обычного системного вызова os.sc, поскольку он устарел. Я провел последние 2 дня, просматривая документы и тому подобное, пытаясь выяснить, что я делаю неправильно, но по какой-то причине, если я вызываю унисон с терминала, это не проблема, но когда я делаю тот же вызов из Python пытается взаимодействовать с пользователем, и, кроме того, я не собираю, а около половины вывода, другой все еще печатает на терминал.
Вот мой код, который я пытаюсь использовать:
sync = Popen(["unison", "sync"], shell = True, stdout = PIPE)
for line in sync.stdout
logFile.write(line)
sync.wait()
if sync.returncode == 0 or sync.returncode == None:
logFile.write("Sync Completed Successfully\n")
else
logFile.write("!! Sync Failed with a returncode of: " + str(sync.returncode) + "\n")
Вот мой конфигурационный файл Unison:
root = /home/zephyrxero/temp/
root = /home/zephyrxero/test/
auto = true
batch = true
prefer = newer
times = true
owner = true
group = true
retry = 2
Что я делаю не так? Почему все выходные данные Unison не сохраняются в моем лог-файле и почему он запрашивает подтверждение при запуске сценария, а не когда я запускаю его явно из терминала?
UPDATE:
Хорошо, благодаря Эмилю, я теперь собираю все выходные данные, но все еще не могу понять, почему ввод "унисон-синхронизации" в терминал дает другие результаты, чем при вызове его из моего скрипта.