python3 内置函数open使用法法笔记 方便直接复制、粘贴。
一、内置函数open语法介绍python3中文件读写方法【文本文件 二进制文件】
object_file open(file, mode ‘r’, buffering -1, encoding None, errors None, newline None, closefd True, opener None)
参数介绍
file 文件路径
mode 读取文件模式 默认为r或rt【文本模式读】。 几个常见的读写模式组合如下
二进制文件读写【rb wb】 文本读写【r rt w wt a a r 】。
rb【二进制文件读】
wb 【二进制写 清空后再写入】
w/wt 【文本模式写 清空后再写入】
a【追加模式 只能写在文件末尾】
w 【可读写 与a 的区别是要清空文件内容】
a 【可读写模式 只能追加写在文件末尾 】
r 【可读写 与a 的区别是可以写到文件任何位置 】
buffering 可选参数 表示缓冲区的策略选择
0 设置为0时 表示不使用缓冲区 直接读写 仅在二进制模式下有效
1 设置为1时 表示在文本模式下使用行缓冲区方式
大于1 设置为大于1时 表示缓冲区的设置大小。 如果参数buffering没有给出 使用默认时 会采用下面策略来选择
1 对于二进制文件模式时 采用固定块内存缓冲区方式 内存块的大小根据系统设备的分配的磁盘块来决定 如果获取系统磁盘块的大小失败 就使用内部常量io.DEFAULT_BUFFER_SIZE定义的大小。一般的操作系统上 块的大小是4096或者8192字节大小。
2 对于交互的文本文件 采用isatty()判断为True 时 采用一行缓冲区的方式。其它文本文件使用跟二进制一样的方式。
来源于博客 https://blog.csdn.net/uytrrfg/article/details/83583169
encoding 可选参数 仅针对文本编码 默认是使用locale.getpreferredencoding()函数返回的编码方式。
errors 可选参数 参数errors是用来指明编码和解码错误时怎么样处理
1 当指明为’strict’时 编码出错则抛出异常ValueError。
2 当指明为’ignore’时 忽略错误。
3 当指明为’replace’时 使用某字符进行替代模式 比如使用’?’来替换出错的。
4 其它相应还有surrogateescape/xmlcharrefreplacs/backslashreplace。
原文链接 https://blog.csdn.net/uytrrfg/article/details/83583169
newline 可选参数 每一行结束标识 默认为换行“n” 可自定义 None ’’ n r rn等等。
closefd和opener 不知道啥玩意 也没用过 暂时先不管了
open内置函数更多API详情查看 https://devdocs.io/python~3.6/library/functions#open
open 通用读取文件三种方法 代码示例
# -*- coding:utf-8 -*- import os, locale from ProcessorFile import config normal_file os.path.join(config.input_path, read_test.txt ) #三种读取方式 readline()/readlines()/read() #最常用方法 每行逐步读取 节约空间 with open(normal_file, r , encoding utf-8 ) as f: line f.readline() while line: print(line) #include n print(type(line)) line f.readline() #return list with open(normal_file, r , encoding utf-8 ) as f1: lines f1.readlines() #inclue n print(lines) print(type(lines)) #return str with open(normal_file, r , encoding utf-8 ) as f2: text f2.read() print(text) print(type(text))open 读取文件三种方法 按照size来读取 代码示例
# -*- coding:utf-8 -*- import os, locale from ProcessorFile import config normal_file os.path.join(config.input_path, read_test.txt ) file_size os.path.getsize(normal_file) #获取文件大小 print(file_size) #通过指定文件大小(字节)读取文件 #readline(size)读取逻辑 先按行读取 再按指定的字节大小读取。 #当size line_size(当前行字节大小) 返回当前行size大小字符。继续读取 将依然读取改行数据 直到读完该行数据 #当 size line_size 返回当前行所有字符 with open(normal_file, mode r , encoding utf-8 ) as f: line_by_size f.readline(14) while line_by_size: line_by_size f.readline(64) print(line_by_size) #readlines(size)读取逻辑 先按照size读取 直到返回最后一个字节所在的最后一整行。 with open(normal_file, mode r , encoding utf-8 ) as f1: lines_by_size f1.readlines(110) print(lines_by_size) #read(size)读取逻辑 完全按照size大小读取 with open(normal_file, mode r , encoding utf-8 ) as f1: str_by_size f1.read(10) print(str_by_size)针对报错 #UnicodeDecodeError: gbk codec can t decode byte 0x80 in position 15: illegal multibyte sequence 两种解决方案
# -*- coding:utf-8 -*- import os, locale from ProcessorFile import config normal_file os.path.join(config.input_path, read_test.txt ) #针对编码问题报错 #UnicodeDecodeError: gbk codec can t decode byte 0x80 in position 15: illegal multibyte sequence #两种解决方案 #添加参数, encoding,指定读取编码 with open(normal_file, r , encoding utf-8 ) as f: line f.readline() while line: print(line) #include n print(type(line)) line f.readline() #改变读取模式 以二进制形式读取 然后输出的时候使用decode解码 with open(normal_file, rb ) as f: line f.readline() while line: print(line.decode()) line f.readline()2.写入数据
write方法与writelins()方法 代码示例
# -*- coding:utf-8 -*- import os, locale from ProcessorFile import config normal_file os.path.join(config.input_path, write_test.txt ) list [ 男儿何不带吴钩 , 收取关山五十州。 , 请君暂上凌烟阁 , 若个书生万户侯 ] #write方法: with open(normal_file, w ) as f: for line in list: f.write(line) print( write successful! ) #writelines方法 with open(normal_file, w ) as f: f.writelines(list) print( write successful! )总结
提示 这里对文章进行总结
例如 以上就是今天要讲的内容 本文仅仅简单介绍了pandas的使用 而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。



