내가 가지고있는 원래 스크립트 내에서 별도의 파이썬 스크립트를 실행하는 파이썬 스크립트에 다음 줄 :subprocess.Popen은 (는) 콘솔에 기록 의사 소통을하지만, 파일에 로그인 할 수 없습니다
subprocess.Popen("'/MyExternalPythonScript.py' " + theArgumentToPassToPythonScript, shell=True).communicate()
위의 줄을 사용하여 , 별도의 Python 파일에있는 문은 주 Python 스크립트의 콘솔에 나타납니다.
그러나이 문은 스크립트가 쓰는 .txt 파일 로그에 반영된 이 아니며은 반영됩니다.
누구든지이를 수정하는 방법을 알고 있으므로 .txt 파일이 메인 파이썬 스크립트의 진정한 콘솔 텍스트를 정확하게 반영 할 수 있습니까?
이 내가 실시간으로 .txt 파일로 콘솔을 저장하기 위해 사용하고 the method이다 : 나는 반드시이 방법에 부착하고 있지 않다
import sys
class Logger(object):
def __init__(self):
self.terminal = sys.stdout
self.log = open("/ScriptLog.txt", "w", 0)
def write(self, message):
self.terminal.write(message)
self.log.write(message)
sys.stdout = Logger()
. 나는 내가 상세히 설명한 것을 달성 할 수있는 방법에 관심이있다.
할 수 있습니다'self.log.flush()'모든 쓰기 후. 기본적으로 파이썬은 버퍼에 충분한 데이터가 있거나 파일 핸들이 닫힐 때까지 (예 : 애플리케이션이 멈출 때까지) 파일에 쓰려고 기다립니다. –
'self.log.write (message)'다음에'self.log.flush()'를 삽입하려고했습니다. 이렇게하면 아무 것도 바뀌지 않았습니다. .txt 파일은 여전히 외부 스크립트의'print' 텍스트를 포함하지 않습니다. – Crickets
잠깐만 요,이 스크립트는 다소 위험합니다. 게다가 당신의 프로그램은 어디에도 인자를 전혀 인쇄하지 않습니다. 그래서 이것은 인수를 인쇄하는 쉘 자체 일 뿐이라고 생각합니다. –