栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python3处理普通文件

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python3处理普通文件

文章目录 前言一、内置函数open语法介绍二、可直接复制粘贴的代码案例1.读取文件2.写入数据 总结

前言

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

二、可直接复制粘贴的代码案例 1.读取文件

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提供了大量能使我们快速便捷地处理数据的函数和方法。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267619.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号