文件打开:
1. f = open('yesterday,‘r+’,encoding = ‘utf-8’) 读取的方式加载为Utf-8
r 打开文件并写, 只适用于文字类
r+ 打开文件并读写,文件的指针定位在文件的开始位置;文件不存在就报错
w 打开文件只读操作, 如果文件存在就清空文件,文件不存在就创建文件
w+ 打开文件并写读,如果文件存在就清空文件,从新写入,如果文件不存在就创建文件
a 打开文件并追加, 文件存在时,就追加在文件的后面,如果文件不存在就创建
a+ 打开文件并追加读,文件存在时,文件指针定位在文件的开始位置,文件不存在,则创建新的文件,写入时,添加到文章末尾,并且指针也指向文章末尾
wb 进行二进制文件的写 多用于exe, elf, jpeg格式的文件
rb 进行二进制文件的读
在读文件时的5种读取方式:
1. f.read() 按原来格式全部读取
2. f.read(n) 读取n个字符或者字节
3. f.readline() 只读取一行
4. f.readlines() 全部读取,然后储存在一个列表中
5. for 循环 使用的是生成器,因此读取速度快,且每次在内存中都只存在一行
文件迭代器:
#举例 在文件第3行打出(‘----分隔符----’)
count = 0
for line in f:
count += 1
if count == 3:
print((‘----分隔符----’)
continue
print(line)
#速度较快
光标:
print(f.tell()) 显示光标的位置
print(f.seek(0)) 设置光标的位置 f.seek(0, 2) 设置光标的位置在结尾
其他操作
f.readable() 判断是否可读
f.writeable() 判断是否可写
f.truncate(size) size表示截取的范围,在打开文件时,必须采取写的方式,因此这里可以使用a+, 或者r+
读条的实现
import sys
import time
for i in range(10):
sys.stdout.write('#') #输出字符不换行
sys.stdout.flush() #强制刷新
time.sleep(0.1)
2. with open('yesterday.txt', 'r', encoding = 'utf-8') as f: #文件打开的另外一种方式
for line in f:
print(line)
3. 文件的修改
import os
f_new = open('yesterday3.txt', 'a')
f = open('yesterday.txt','r', encoding = 'utf-8')
for line in f:
if '小红' in line:
line = line.replace('小红', ‘’小明“)
f_new.write(line)
f.close()
f_new.close()
os.remove(''yesterday3.txt'')
os.rename('yesterday.txt', 'yesterday3.txt')