편집 : 죄송합니다! 실수로 내 질문과 일치하지 않는 코드를 게시했습니다. 실험을하기 전에이 글을 쓰기 시작 했으므로 테스트 과정에서 중간 지점의 코드를 게시했습니다. 코드를 약간 변경하여 게시하기로 한 것을 반영하기 위해이 질문을 수정했습니다.python이 perl을 호출하면 파일이 Popen에 의해 read()가 될 때까지 생성되지 않습니다
다음 Python 코드는 하나의 문제점으로 예상대로 작동합니다. unless I 자세한 경우 == False 인 경우 Perl 스크립트에서 생성 된 파일이 만들어지지 않습니다. 파일을 성공적으로 만들기 위해 기본 Perl 스크립트에 대해 output.stdout.read()를 호출해야하는 이유는 무엇입니까? 내가 프로덕션 환경에서 거짓 = 자세한 내 파이썬 스크립트를 실행하려고 할 때까지 나는 심지어 아무것도 몰랐어요
cmdStringList = ["perl","script.pl","arg1",...]
output = subprocess.Popen(cmdStringList,stdout=subprocess.PIPE)
if verbose:
print output.stdout.read()
잘못이었다. Popen과 하위 프로세스의 동작을 이해하려고 시도하기 위해 google-fu를 수행했지만이 동작에 대한 이유가 없었습니다. 어떤 도움이라도 대단히 감사하겠습니다.
귀하의 질문에 일관성이 없습니다. 당신은'output.stdout.read()'를 호출하지 않으면 실패하고, verbose가 false로 설정되면 실패하기 시작했다고합니다. 어떤거야? 잘못된 코드를 게시 했습니까? – ikegami
네가 맞아 - 내 질문에 엉망이 됐어. 처음에 게시 할 의도가있는 코드로 변경했습니다. – Anthony