python的文件操作
来源:互联网 发布:神奇先生知乎 编辑:程序博客网 时间:2024/06/06 09:32
主要就两种打开文件和操作文件
一、打开文件
python中打开文件有两种方式open()和file()都可以一般使用open
打开文件 :文件句柄 = open(‘文件路径’, ‘模式’,‘编码格式’)
文件句柄又被称为文件操作符,文件操作对象还有这些命名方式:f ,file , f_obj , f_handler , fh
f=open(…)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-8。
#这就用到了上节课讲的字符编码的知识:若要保证不乱码,文件以什么方式存的,就要以什么方式打开。f=open('a.txt','r',encoding='utf-8')
只要打开文件的编码与python解释器的编码相同就不会乱码
打开文件的模式有:
- r:只读模式(默认模式)文件内部指针指向最开始。
- w:只写模式,一打开就清空文件。(存在则覆盖,不存在就建立一个新的)
- a:追加模式,(可读,文件指针指向最后)
- ‘+’:表示可以同时读取和写入一个文件
- r+:表示可读可写,文件指针在最开始,可以刚开始就追写但会覆盖,追加需把文件指针移到最后。
- w+:表示可写可读,如果文件存在则会覆盖清空,然后写入,写入后可以read。
- a+:同a
b:图片、音乐、视频等任何文件(bytes打开形式)
传输,上传下载
- rb:以bytes形式打开文件来进行读取。
- wb:清空文件然后以bytes形式来写入
- ab:以bytes形式进行追加。
读取文件的操作
- 读取文件的第一种方式:file.read()用read方法会一次性的读取文件中的所有内容并以字符串的类型输出。
- 读取文件的第二种方式:file.readline()每次执行readline就会往下读第二行并以字符串的形式输出。
- 读取文件的第三种方式:file.readlines()返回一个列表将列表中的每一行作为列表中的每一项
- 读取文件的第四种方式:for i in f ,每次只读一句内存中也只存在一行的大小,f是一个可迭代的文件流类型。
read(3)在打开文本文档时读文件内的三个字符,在以二进制形式打开的文件内则是读三个字节。
写入文件的操作
file.write(str)传入一个str类型进行写入。
文件内指针的移动
seek,tell,truncate
注意:
1. seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的,常用seek(0)移动到开头,seek(0, 2)移动到最后面
2. truncate是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate要在r+或a或a+等模式下测试效果,truncate()字节 从文件开始的位置只保留指定字节的内容与文件指针无关
3.tell告诉你当前指针的位置
对于文件的修改
import osf = open('原文件',encoding='utf-8')f2 = open('原文件.bak', 'w', encoding='utf-8')line = f.read()new_line = line.replace('原来的', '新的内容')f2.write(new_line)f.close()f2.close()os.remove('原文件')os.rename('原文件.bak', '原文件')
但是这个方法很low因为这方法一次性读取了所有的文件内容,文件一大在内存中所占的资源非常大所以我们用for循环来改进。
f = open('原文件',encoding='utf-8')f2 = open('原文件.bak', 'w', encoding='utf-8')for line in f: line = line.replace('原来的内容', '新的内容') f2.write(line)f.close()f2.close()os.remove('原文件')os.rename('原文件.bak', '原文件')
增加一个从文件中读取信息,转变为字典类型
with open('SQL',encoding='utf-8') as f: for i in f: # i为字符串 if i.strip(): # 判断字符串是否为空 dic = {} i = i.strip() # 去除字符串两端的空格还可以去除换行符 li = i.split() lis = [] dic['name'] = li[0] dic['age'] = li[1] lis.append(dic)print(lis)
- Python的文件操作
- Python的文件操作
- Python的文件操作
- python的文件操作
- python的文件操作
- Python的文件操作
- python的文件操作
- Python的文件操作
- python的文件操作
- Python-文件的操作
- python 的文件操作
- python的文件操作
- 简单的python文件操作。
- python对文件的操作
- Python 文件的读写操作
- 13.python的文件操作
- Python对于文件的操作
- python关于文件的操作
- C语言ctype.h系列的字符函数
- iOS之热修复JSPatch 实现原理详解
- java 编写 输入三个边长 判断是否组成三角行 若能组成三角行 求面积
- Linux使用diff和patch制作和安装补丁实例
- 经验分享:如何系统学习 Web 前端技术?
- python的文件操作
- 简单模拟 spring的bean容器的实现
- ecshop适应PHP7的修改及事务处理
- MXNet官方文档中文版教程(8):使用预训练模型预测
- 万能地图下载器中在任务列表中如何快速选择多个任务?
- 安卓xml文件中设置动画匀速旋转无效?
- U-boot主Makefile分析
- 订单支付功能对接支付宝支付接口
- Android Studio 3.0 更新后的各种坑