2013-04-10 138 views
0

您好,我有兴趣从头到尾地一次读取一个字节的文件。从一开始就读取一个字节的文件从开始到开始

这是我到目前为止有:

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

     if piece =="": 
      break 
     print piece 

我怎样才能改变这种使我能够读取字节的文件,从年底开始一个TIEM?

+0

多大的文件什么是你想达到反正 – NPE 2013-04-10 18:38:02

+0

这是我得到的鞋底在Java中的一个问题,C#,PHP和Python.I设法解决它在第一个免费的,但我可以?不解决它在python.The文件是一个基本的文本文件。 – aleczandru 2013-04-10 18:42:38

+1

那么它是什么具体ab你认为Python版本与其他语言中已写入的版本不同(更难?)? – NPE 2013-04-10 18:43:46

回答

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

对于第二个...为什么不只是'逆向(fc):c打印(c)'?它更简单,并且更难以在错误出错等情况下出错。 – abarnert 2013-04-10 19:01:26

+0

谢谢您的建议。你的方式更好,除非我们想要一个一个组地处理数据,而不是一个字节一个字节。 – Sheng 2013-04-10 21:05:44

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