Używam Pythona do automatyzacji zatwierdzenia SVN i chcę zapisać dane wyjściowe polecenia SVN do pliku dziennika. Kod, który mam, może spowodować uruchomienie SVN, ale problem polega na tym, że po pomyślnym zatwierdzeniu wywołanie subprocess
nie zwraca żadnych danych wyjściowych do mojego dziennika.Podczas korzystania z podprocesu.Popen(), stderr i stdout nie mają wyjścia
Po uruchomieniu SVN ręcznie, dla porównania, otrzymuję dane wyjściowe, które pokazują postęp polecenia i pokazują, które pliki są zatwierdzane. Właśnie tego chcę w moim pliku dziennika. Czy SVN przesyła dane do bufora niż stdout czy stderr? Jak mogę przechwycić te dane dla mojego logu?
Oto kod używam:
cmd = "svn commit --non-interactive --no-auth-cache -m 'Automatic commit' ./"
process = subprocess.Popen(cmd,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True)
result = process.wait()
# Output
out = process.stdout.read()
err = process.stderr.read()
Kiedy uruchomić ten kod i zobowiązać się pomyślnie, out
i err
zmienne są zarówno puste.
Jak wysłać dane logowania to zrobić? Próbuję tego samego i nie mogę wymyślić, jak wysłać nazwę użytkownika i hasło do tego samego –