텍스트 파일을 열어서 한 번 작성한 텍스트 파일을 계속해서 쓰고이 파일을 새 줄을 콘솔에 인쇄합니다. 매번 전체 텍스트 파일. 파일 크기가 커지면 다음 줄 바꿈을 인쇄합니다. 이것은 대부분 효과적이지만 때로는 다음 줄 바꿈에 대해 약간 혼란스러워지며 새 줄은 몇 줄 위로 나타나며 이전 줄과 섞여 있습니다. 이 작업을 수행하는 더 좋은 방법은 현재 코드입니다. 이 위대한하지 않은, 표시 몇 초 걸립니다 텍스트 파일을 기다리는 동안텍스트 파일을 열고 파이썬에서만 새 줄을 인쇄하십시오.
또한infile = "Null"
while not os.path.exists(self.logPath):
time.sleep(.1)
if os.path.isfile(self.logPath):
infile = codecs.open(self.logPath, encoding='utf8')
else:
raise ValueError("%s isn't a file!" % file_path)
lastSize = 0
lastLineIndex = 0
while True:
wx.Yield()
fileSize = os.path.getsize(self.logPath)
if fileSize > lastSize:
lines = infile.readlines()
newLines = 0
for line in lines[lastLineIndex:]:
newLines += 1
self.running_log.WriteText(line)
lastLineIndex += newLines
if "DBG-X: Returning 1" in line:
self.subject = "FAILED! - "
self.sendEmail(self)
break
if "DBG-X: Returning 0" in line:
self.subject = "PASSED! - "
self.sendEmail(self)
break
fileSize1 = fileSize
infile.flush()
infile.seek(0)
infile.close()
내 응용 프로그램이 정지가 생성 될 수 있습니다.
건배.
리눅스의'tail -f fname' 명령을 사용하고 싶을 수도 있습니다 - 윈도우에 있다면 cygwin을 사용하십시오. –
관련 : [어떻게 파이썬에서 로그 파일을 꼬리 수 있습니까?] (http://stackoverflow.com/q/12523044/4279) – jfs