Tôi đang sử dụng Python để tự động hóa một cam kết SVN, và tôi muốn viết đầu ra của lệnh SVN vào một tệp nhật ký. Mã mà tôi có thể làm cho SVN chạy, nhưng vấn đề là trên một cam kết thành công, lời gọi subprocess
không trả lại bất kỳ đầu ra nào cho nhật ký của tôi.Khi sử dụng subprocess.Popen(), stderr và stdout không có đầu ra
Khi tôi chạy SVN theo cách thủ công, bằng cách so sánh, tôi nhận được kết quả đầu ra cho biết tiến trình của lệnh và hiển thị tệp nào đang được cam kết. Đó là những gì tôi muốn trong tệp nhật ký của mình. SVN có xuất dữ liệu đó vào bộ đệm hơn stdout hay stderr không? Làm thế nào tôi có thể nắm bắt dữ liệu đó cho nhật ký của mình?
Dưới đây là đoạn code tôi đang sử dụng:
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()
Khi tôi chạy mã này và cam kết thành công, out
và err
biến đều trống rỗng.
Làm thế nào để bạn gửi thông tin đăng nhập để làm điều đó? Tôi đang cố gắng như vậy và không thể tìm ra cách gửi tên người dùng và mật khẩu cho cùng một –