나는 유니슨을 통해 자동화 및 로그 기록을위한 간단한 스크립트를 만들려고합니다. subprocess.Popen을 사용하고 있습니다. 일반적인 os.system 호출보다는 deprecated입니다. 나는 지난 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")
내 유니슨 설정 파일입니다 :
root = /home/zephyrxero/temp/
root = /home/zephyrxero/test/
auto = true
batch = true
prefer = newer
times = true
owner = true
group = true
retry = 2
내가 무슨 일을하고 있는가? 왜 유니슨의 모든 출력물이 내 로그 파일에 저장되지 않고, 스크립트가 실행될 때 확인 메시지를 표시하는 이유는 무엇입니까?하지만 터미널에서 평범하게 실행하지 않는 이유는 무엇입니까?
UPDATE : 에밀에 좋아, 덕분에 지금은 모든 출력을 캡처 합니다만,에서를 호출 할 때와는 다른 결과를 얻고있다 터미널에 "한마음 동기화"를 입력 내가 왜 아직 알아낼 수 없습니다 내 스크립트.
필자는 이전에 파이핑 표준을 시험해 보았지만 어떤 이유로 작동하지 않는 것 같았습니다 ... 입력을 기다리고 있다고 생각하기 전에 ... 흠 ... 모든 출력을 캡처 한 것 같습니다 지금. –