r 读入文件多字节字符串有错_read & readline & readlines 文件读取

Key points:

  • 搭配 open 的调用格式及参数说明
  • read & readline & readlines 使用说明
  • 模式‘r’&‘rb’等描述说明

Read方法通常有三种,read, readline 和 readlines 通常和 open 结合使用。

with open (fpath,'r') as f:
    pass

三种读取方法的详细使用:

f.read()

  • 特点是:读取整个文件,将文件内容放到一个字符串变量中。
  • 劣势是:如果文件非常大,尤其是大于内存时,无法使用read()方法。

note:read()直接读取字节到字符串中,包括了换行符

fpath = r'D:Deep_learningdata_collectionread.txt'
sentence = []
with open(fpath,'r') as f:
    text = f.read()
text
'Readn特点是:读取整个文件,将文件内容放到一个字符串变量中。n劣势是:如果文件非常大,尤其是大于内存时,无法使用read()方法。nread()直接读取字节到字符串中,包括了换行符n'

f.readline()

  • 特点:readline()方法每次读取一行;返回的是一个字符串对象,保持当前行的内存
  • 缺点:比readlines()慢得多
fpath = r'D:Deep_learningdata_collectionread.txt'
sentence = []
with open(fpath,'r') as f:
    text = f.readline()
text
'Readn'

note:readline() 读取整行,包括行结束符,并作为字符串返回

f.readlines()

特点:一次性读取整个文件;自动将文件内容分析成一个行的列表。

readlines()读取所有行然后把它们作为一个字符串列表返回。

fpath = r'D:Deep_learningdata_collectionread.txt'
sentence = []
with open(fpath,'r') as f:
    text = f.readlines()
text
['Readn',
 '特点是:读取整个文件,将文件内容放到一个字符串变量中。n',
 '劣势是:如果文件非常大,尤其是大于内存时,无法使用read()方法。n',
 'read()直接读取字节到字符串中,包括了换行符n']

open 通常用的格式:

open( name [, mode[, buffering]])

参数说明:

name :一个包含了你要访问的文件名称的字符串值。

mode :mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

buffering :如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

高效的读取文件的方式

以上介绍的文件读取方式都是一次性的把文件全都读入内存,如果是大文件对PC的要求比较高,可以使用迭代读入的方式一次读入一行。

with open (fpath) as f:
    if line in f:
        pass

模式详细描述见下表:

e42afdda124f1948c2c54366681e54d0.png

版权声明:本文为weixin_29532075原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。