2013-04-10 4 views
0

안녕하세요. 끝에서 시작하여 한 번에 한 바이트 씩 파일을 읽는 것에 관심이 있습니다. 가 끝에서 시작까지 한 번에 한 바이트 씩 파일 읽기.

fileName = raw_input() 
with open(fileName , "rb") as handler: 
    while True: 
     piece = handler.read(1) 

     if piece =="": 
      break 
     print piece 

는 어떻게 변경할 수 있습니다

내가 처음으로 끝에서 tiem에서 바이트의 파일을 읽을 수 있어요 있도록 :

이것은 내가 지금까지 가지고 무엇인가?

+0

얼마나 큰 파일입니다 당신은 내가 자바 단독에게 주어진 문제는 C#, PHP의 – NPE

+0

어쨌든 달성하기 위해 노력하고 Python.I 무료 처음에 그것을 해결하기 위해 관리하지만 내가 할 수있는 무엇입니까? python에서 해결되지 않습니다. 파일은 기본 텍스트 파일입니다. – aleczandru

+1

그래서 구체적으로 무엇입니까 파이썬 버전을 다른 언어로 작성한 것보다 (다른 언어로 작성하는 것이 더 어렵다고 생각하는) 느낌이 들었습니까? – NPE

답변

2

내가 아는 바로는이 문제에 대한 두 가지 해결책이 있습니다.

한편, 당신은 (파일이 너무 큰 아닌 경우) 모든 내용을 읽을 수있다, 반면에 "

>>> fh = open("e:\\text.txt","rb") 
>>> fh.seek(0,2) 
>>> length = fh.tell() 
>>> for i in range(length, 0, -1): 
     fh.seek(i-1,0) 
     char = fh.read(1) 
     print(char) 

말과 기능을 추구 사용하고 시작에서 끝까지를 처리 ​​할 수 :

>>> fh = open("e:\\text.txt","rb") 
>>> fc = fh.read() 
>>> fh.close() 
>>> for i in range(len(fc),0,-1): 
    print(fc[i-1]) 
+0

두 번째 이유는 ... 단지'for c in reversed (fc) : print (c)'가 아닙니까? 하나씩의 오류 등으로 잘못 이해하는 것이 더 간단하고 더 어렵습니다. – abarnert

+0

제안 해 주셔서 감사합니다. 하나의 바이트 단위가 아닌 하나의 그룹 단위로 데이터를 처리하기를 원하지 않는 한 당신의 방법이 더 좋습니다. – Sheng

2

약 어떨까요?

with open(fileName , "rb") as handler: 
    size = handler.seek(0, 2) #2= SEEK_END 
    while size > 0: 
     size -= 1 
     handler.seek(size) 
     b = handler.read(1) 
     print b 
관련 문제