—> 太白老师课件 <—
D8 文件操作
1. 文件操作
f = open(‘路径’,encoding = ‘utf-8‘, mode = ‘r‘ )
f.read()
f.close()
f 变量 文件句柄 mode默认r (只读)encoding默认gbk编码(windows)
open 是windows的系统功能 , python调用windows系统功能
windows默认编码方式: gbk ; linux 默认编码方式 utf-8
(例如系统自带的记事本)
即:用windows记事本写的文件,编码的方式是gbk。
(gbk,utf-8英文无差别,试要试中文) (编码方式在首次文件写入时确定并保存,之后不会变)
f.close() 关闭文件。
f.read(n)
f.readline() f.readlines()
f.writable() f.readable()
f.read(n):
1. 文件打开方式为文本模式时,代表读取n个字符
2. 文件打开方式为b模式时,代表读取n个字节
f.seek(n):
按字节调整光标的位置
seek(n)光标移动到n位置,注意: 移动单位是byte,所有如果是utf-8的中文部分要是3的倍数
通常我们使用seek都是移动到开头或者结尾
移动到开头:seek(0)
移动到结尾:seek(0,2)
seek的第二个参数表示的是从哪个位置进行偏移,默认是0,表示开头,1表示当前位置,2表示结尾
f.tell():
按字节告诉我们当前光标在什么位置
f.truncate(n)
按字节截取部分文件
Python 文件 truncate() 方法用于截断文件并返回截断的字节长度。
指定长度的话,就从文件的开头开始截断指定长度,其余内容删除;不指定长度的话,就从文件开头开始截断到当前位置,其余内容删除。
with open( ... ) as a,\ 自动关闭文件句柄
open( ... ) as b: 一次性操作多个文件句柄
with open(‘t1‘,encoding=‘utf-8‘) as f1,\
open(‘Test‘, encoding=‘utf-8‘, mode = ‘w‘) as f2:
f1.read()
f2.write(‘老男孩老男孩‘)
2. 读 r,只读
文件以什么编码方式存储的,就以什么编码方式打开。
路径问题:
r‘‘D:\new1.txt"
"D:\\new1.txt"
具体读文件中的数据时,用到的五种方式:(读取到的都是字符串)
1 f.read() 全读
2 f.readline() 一行一行读
3 f.readlines() 按行读,存列表,有\n.
4 f.read(n) r模式,按照n个字符读取 rb模式,按照n个字节读取
5 for 循环 读取 (i 即代表文件中一行数据)
for i in f:
print(i.strip())
写 w: f = open("d:\\abc.txt", encoding=‘utf-8‘, mode = ‘w‘ )
没有文件,则先创建;有的话,清空
f.write(str1)
f.write(str2)
若原文件有内容,先清空,然后str1,str2两个字符串依次写入文件(并不会发生覆盖)
wb: f = open(‘log‘, mode=‘wb‘)
f.write(‘老男孩教育‘.encode(‘utf-8‘))
f.close()
a: 没有文件,则先创建;有的话,追加
rb:
只读 以bytes类型读取 涉及非文字类的文件时用rb
r+: 读写,先读,后追加 若先写后读,则会修改原来的文件,并会改变光标位置
注意:如果你在读写模式下,先写后读,那么文件就会出问题,因为默认光标是在文件的最开始,你要是先写,
则写入的内容会讲原内容覆盖掉,直到覆盖到你写完的内容,然后在后面开始读取
w+: 写读,先写,后读取
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
3. 文件的修改:
文件的数据是存放于硬盘上的,因而只存在覆盖、不存在修改这么一说,我们平时看到的修改文件,
都是模拟出来的效果,具体的说有两种实现方式:
方式一:将硬盘存放的该文件的内容全部加载到内存,在内存中是可以修改的,修改完毕后,
再由内存覆盖到硬盘(word,vim,nodpad++等编辑器)
方式二:将硬盘存放的该文件的内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件
1 import os
2
3 with open(‘a.txt‘) as read_f, open(‘.a.txt.swap‘, ‘w‘) as write_f:
4 for line in read_f:
5 line = line.replace(‘alex‘, ‘SB‘)
6 write_f.write(line)
7 os.remove(‘a.txt‘)
8 os.rename(‘.a.txt.swap‘, ‘a.txt‘)
python基础篇 笔记02
原文:https://www.cnblogs.com/kingon/p/11785680.html