python读取文件的一般流程(python关于文件读取read里面的参数解释)

本文详细说明文件读取时,read()中参数的解释,可直接滑到文尾看总结.

f.read()读取文件的整个内容,返回的是字符串

如果一次性读取比如10G的文件,内存就直接爆了,所以需要限制单次读取的大小.

read()可接收size参数,在官方文档提示中

python读取文件的一般流程(python关于文件读取read里面的参数解释)(1)

官方文档提示的size参数

size参数是整数型,如果不设置.默认f,read()默认读取字节数-1

也就是说在文件管理器中,显示为字节数量为x,那么默认size的值为x-1

python读取文件的一般流程(python关于文件读取read里面的参数解释)(2)

文件管理中的文件属性,红框中的值减1就是size值

-----------------------

案例一:

读取下面这个文件的内容

python读取文件的一般流程(python关于文件读取read里面的参数解释)(3)

箭头所指就是文件的末尾

代码及其运行结果如下:

python读取文件的一般流程(python关于文件读取read里面的参数解释)(4)

265997字节内容全部读取到并输出了

-----------------------

案例二:

依旧是读取上面那个265 997 字节大小的文件

代码及其运行结果如下:

python读取文件的一般流程(python关于文件读取read里面的参数解释)(5)

读取1024 * 87 100 输出的内容

从图中可以看到:

实际是265,997 字节(约为259k)大小的文件,

只读取1024 * 87 100字节(约87k)就输出了所有的内容 !

不是说好的size值多大就读取多少文件内容吗?怎么设置比size小的多的值也读取了全部的文件内容?且看案例三:

-----------------------

案例三:代码及其运行结果

python读取文件的一般流程(python关于文件读取read里面的参数解释)(6)

代码及其结果

这次读取的内容的大小为 整个内容的字符串长度,依旧成功输出了几乎(少4个字)全部的内容.

到这应该能明白了,

utf-8的编码的文本中,一个汉字占三个字节,一个英文字母占一个字节.

又由于在文本文件读取模式,size的计数是以Unicode字符的个数计数的,

也就是说列举的三个案例size的计数不是字节,而是字符.

-----------------------

绕了这么多弯子,总结.

读取文件限制最大读取大小时,要注意

在文本文件读取模式,size的计数是以Unicode字符的个数计数的,

在二进制文件读取模式下,size计数是以字节为单位计数。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页