我正在尝试制作一个简单的脚本来通过 Unison 自动化和记录同步。我也使用 subprocess.Popen 而不是通常的 os.system 调用,因为它已被弃用。在过去的 2 天里,我一直在查看文档等,试图找出我做错了什么,但是由于某种原因,如果我从终端调用 unison,它就没有问题,但是当我从 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 的所有输出都没有保存到我的日志文件中,为什么它在脚本运行时要求我确认,但当我从终端直接运行时却没有?
更新: 好的,多亏了 Emil,我现在正在捕获所有输出,但我仍然无法弄清楚为什么在终端中输入“unison sync”会得到与从我的脚本中调用它时不同的结果。