使用Python编写Unison脚本的问题
我正在尝试写一个简单的脚本,用来自动化和记录通过Unison进行的同步。我使用的是subprocess.Popen,而不是以前常用的os.system,因为后者已经不推荐使用了。我花了两天时间看文档,试图弄清楚我哪里出错了,但奇怪的是,当我在终端直接调用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”和从我的脚本调用时结果会不一样。