저는 Python을 통해 Bazaar 버전 제어를 실행하려고합니다. 이 목적을 위해 "os.system ('')"을 사용하고 있습니다. (지금은 명령 프롬프트를 통해 명령을 실행하는 것이 권장 된 명령이 아닙니다.)Python에서 CMD 명령을 실행하여 텍스트 출력하기 (0123)
"BZR commit [file] -m '[text]'명령을 실행하고 싶습니다. 이렇게하면 Bazaar가 실행되고 [file]에 대한 변경 사항을 [text] 메시지와 함께 커밋합니다. 이 명령을 실행하면 Bazaar가 몇 줄의 텍스트를 명령 프롬프트에 인쇄하여 기본적으로 성공했는지 여부를 알려줍니다.
"os.system ('[message]')"(여기서 [message]는 앞에서 언급 한 명령 임)으로이 명령을 실행하면 명령 프롬프트에서 명령을 성공적으로 수행하고 관련 행을 인쇄합니다. 파이썬에서이 행을 되돌아가 원하는 것을 확인하고 싶습니다. 이것이 제 문제입니다.
나는 "result = os.system ('[message]')와 같은 것을 시도했지만 이것은 작동하지 않습니다. '결과 = 3'은 3이 분명히 명령 프롬프트의 출력이 아닙니다.
나는 해결책을 찾기 위해 노력했으며 '서브 프로세스'에 관한 많은 제안 (예 : here)을 발견했습니다. 그러나 이것들은 작동하지 않는 것 같고 (적어도 필자는 그것들을 작동시키지 못하는 것 같다.) 'Popen'과 'communicate()'를 사용하여 출력을 얻고 오류를 얻는 것과 같은 기술을 사용한 결과는 둘 다 '없음'. 내가 뭔가 잘못하고있는 것일 수도 있습니다.
내가 원으로 돌아가고 있다고 느낄 때 도움이 될 것입니다. 또한 사과가 어딘가에 해결 되었다면, 나는 정말로 구글을 통해 해결책을 찾고, stackoverflow를 검색했지만 올바르게 실행할 수 없었다.
누구든지 도움을 줄 수있는 정보가 더 필요하면 도와주세요.
감사합니다.
import subprocess
file = "foo.txt"
text = "'comment'"
output = subprocess.check_output(["BZR", "commit", file, "-m", text])
print(output)
면책 조항 :
당신은 ['subprocess.check_output'] (https://docs.python.org/3/library/subprocess.html#subprocess.check_output) – CoryKramer
당신이 가지고있는 서브 프로세스의 코드를 추가 사용할 수 있습니다 시도한 결과와 오류 출력 –
[this answer] (http()의 스크립트 마지막 부분에 표시된 것처럼'subprocess.Popen(). stdout with output :','for line in output :'을 사용할 수 있습니다. : //stackoverflow.com/questions/4415134/python-on-windows-run-multiple-programs-sequentially-in-one-command-prompt/4416529#4416529). – martineau