文件操作
一.文件操作的基本流程
# 绝对路径 f = open('d:\文件.txt', mode='r', encoding="utf-8") # 打开文件,内容('文件路径',打开模式,编码方式) a = f.read() # 对文件进行的操作 print(a) f.close() # 关闭程序 # 相对路径 f = open('文件操作', mode='r', encoding="utf-8") a = f.read() print(a) f.close()
二.文件的打开模式
1. 打开文件的模式有(默认为文本模式):
r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
# a :阿瑟东阿萨斯法 f = open('a', mode='w', encoding='utf-8') content = f.write('as') # a:as
a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】
# a:阿瑟东阿萨斯法as f = open('a', mode='a', encoding='utf-8') content = f.write('阿萨大') f.close() # a:阿瑟东阿萨斯法as阿萨大
2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式
rb
wb
ab
注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码
3,‘+’模式(就是增加了一个功能)
r+, 读写【可读,可写】
w+,写读【可写,可读】
a+, 写读【可写,可读】
4,以bytes类型操作的读写,写读,写读模式
r+b, 读写【可读,可写】
w+b,写读【可写,可读】
a+b, 写读【可写,可读】
三.操作
read 按字符定光标读取
a :阿瑟东阿萨斯法 f = open('a', mode='r', encoding='utf-8') content = f.read(3) print(content) f.close() # 阿瑟东
seek 按字节移动光标(英文一个字符一个字节,中文三个字节一个字符)
# a :阿瑟东 f = open('a', mode='r+', encoding='utf-8') f.seek(3) content = f.read() print(content) f.close() # 瑟东
# b: abcdefg f = open('', mode='r+', encoding='utf-8') f.seek(3) content = f.read() print(content) f.close() # defgh
tell 获取光标的当前位置
f = open('a', mode='r+', encoding='utf-8') content = f.tell() print(content) f.close() #输出 0
readline 读第一行
#a 我曾经跨过山和大海 也穿过人山人海 我曾经拥有着的一切 转眼都飘散如烟 f = open('a', mode='r', encoding='utf-8') content = f.readline() print(content) f.close() # 我曾经跨过山和大海 也穿过人山人海
readlines 每一行当当成列表中的一个元素,然后添加到列表
#a:我曾经跨过山和大海 也穿过人山人海 我曾经拥有着的一切 转眼都飘散如烟 f = open('a', mode='r', encoding='utf-8') content = f.readlines() print(content) f.close() #输出 ['我曾经跨过山和大海 也穿过人山人海\n', '我曾经拥有着的一切 转眼都飘散如烟']
truncate 截取
# b: abcdefg f = open('b', mode='r+', encoding='utf-8') f.truncate(3) content = f.read() print(content) f.close() #输出 abc
for line in f 将文件里的内容一行一行的输出
#a:我曾经跨过山和大海 也穿过人山人海 我曾经拥有着的一切 转眼都飘散如烟 f = open('a', mode='r', encoding='utf-8') for line in f: print(line) f.close() #输出 我曾经跨过山和大海 也穿过人山人海 我曾经拥有着的一切 转眼都飘散如烟
with open 不用close
with open('a', mode='r+', encoding='utf-8') as f, open('b', mode='r+', encoding='utf-8')as f1:
content = f.readlines()
content1 = f1.write('哈哈ha')
print(content, content1)
修改文件
文件不能修改,但是可以创建一个新文件,改变内容后再代替原文件
#a 你曾经跨过山和大海 也穿过人山人海 你曾经拥有着的一切 转眼都飘散如烟 你曾经失落失望 失掉所有方向 直到看见平凡 才是唯一的答案 with open('a', 'r', encoding='utf-8')as f1,open('修改后文件.bak', 'w', encoding='utf-8')as f2: for lin in f1: if '你'in lin: lin = lin.replace('你','我') f2.write(lin) import os os.remove("a") os.rename('修改后文件.bak', 'a') #输出 我曾经跨过山和大海 也穿过人山人海 我曾经拥有着的一切 转眼都飘散如烟 我曾经失落失望 失掉所有方向 直到看见平凡 才是唯一的答案

浙公网安备 33010602011771号