我正在尝试制作一个简单的脚本来通过Unison自动化并记录同步。我也使用subprocess.Popen而不是通常的os.system调用,因为它已被弃用。我花了2天的时间看着文档,试图弄清楚我做错了什么,但是由于某种原因,如果我从终端调用unison,它没有任何问题,但是当我使用Python进行相同的调用时,试图做用户交互,另外我没有捕获,但约一半的输出,另一个仍然打印到终端。使用Python脚本编写Unison的问题
这里是我的代码,我想使用:
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")
这里是我的齐奏的配置文件:
root = /home/zephyrxero/temp/
root = /home/zephyrxero/test/
auto = true
batch = true
prefer = newer
times = true
owner = true
group = true
retry = 2
我在做什么错?为什么不是Unison的所有输出都保存到我的日志文件中,为什么当脚本运行时它要求我确认,而不是当我从终端清楚地运行它时?
UPDATE: 好,感谢埃米尔现在我捕获所有的输出,但我仍然无法弄清楚,为什么键入“齐声同步”到终端,从调用它时比越来越不同的结果,我脚本。
我以前试过管道标准错误,但由于某种原因,它似乎没有工作...可能是之前我想通了,它正在等待输入...嗯...似乎捕获所有的输出现在。 – 2009-10-21 18:21:18