Python中文本文件中的空字符

时间:2015-01-18 18:22:23

标签: python python-3.x

>>> file = open('foo.txt')
>>> file.seek(2)  
2  
>>> file.read(1)  
'\n'  
>>> file.tell()  
4  

为什么目前的位置没有向前移动1个角色? Isn&#t; t '\n'应该是1个字符?

文件前4行的内容:

  

1 @
  2 @
  3 @
  @

PS:我在Windows上。

1 个答案:

答案 0 :(得分:4)

不要试图解释file.tell() for a text file的值 - 它只是表示流中位置的一些不透明数字(您可以将其传递给file.seek())。

在文本文件中,file.read(1)读取一个Unicode字符(代码点),而不是字节。根据用于读取文本文件的字符编码,一个Unicode代码点可能是一到四个字节(通常)。

默认为通用换行模式:'\r\n''\r''\n'全部转换为'\n'

要将文件内容视为字节,请以二进制模式打开:'rb'。在这种情况下,file.tell()以字节为单位返回位置。

b'\0'(空字节)表示在Windows上常见的utf-16编码。