2012. 7. 16. 20:42

열혈 강의 파이썬 책에서 보면 seek 파일을 파일의 끝부터 거꾸로 불러오고 싶을경우

f.seek(-[offset],2)  와 같은 인자값으로 거꾸로 불러 올수 있다고 되어 있다.


0의 경우 파일의 처음부터 1의 경우 현위치부터 2의 경우 파일의 끝부터를 나타내게 되는데,

필자는 위와같은 코드를 바로 적용시키면


 FILE_END=f_log.seek(-3,2)

io.UnsupportedOperation: can't do nonzero end-relative seeks


와같은 에러를 뱉어 냈다.  사실 정확한 원인은 잘 파악하지 못한 상태이지만, 아래와 같은 방법으로 파일의 끝부터 4000바이트 정도 떨어진 크기를 불러오는 식으로 처리 하게 되었다.


영 찜찜하지만...-_-  왜 바로하면 안되는지와 해결법을 알고 계시는분은 

[ k1rha@hacktizen.com ]으로 알려주시면 밥한끼 사도록 하겠습니다. 



f_log = open(LOG_PATH_LIST[0],'r+');


FILE_END=f_log.seek(0,2)

if(FILE_END < 4000):

        f_log.seek(0)

else:

        FILE_BACKWORD_SIZE=FILE_END-4000

        f_log.seek(FILE_BACKWORD_SIZE,0)



LOG_LIST =f_log.readlines()
 


Posted by k1rha