活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。
文件的操作步骤:
- 打开文件
- 操作文件
- 关闭文件
文件的格式:
f = open ( “file:文件的位置(路径)”,“mode:操作文件的模式”,“encoding:文件编码的方式”)
1 r、w、a
1.1 r 操作:
读取方式:一般文件读过之后,不会再读了
print(f.read()) #全部读取 print(f.read(5)) #按照字符读取
print(f.readline().strip()) #按照行读取,读取默认有一个:"张老头真帅!!\n" print(f.readline()) #按照行读取,.strip()去除换行符 print(f.readline()) #按照行读取 print(f.readlines()) #一行一行读取,保存在列表中
若要读取大文件,用循环:
for i in f: print(i.strip()) #本质就是一行一行读取 # 输出: # 张老头真帅!! # 憨憨:123456789 # 铁蛋:158495486665 # 铁柱:17739722352
1.2 w操作:
注意:w,a自动检测,没文件就创建,有文件就操作
步骤:
- (1)先清空文件;
- (2)写入文件
f=open("小姐姐电话号码",mode="w",encoding="utf-8") print(f.write("123456789")) f.write("123456789\n") f.write("123456789\n") f.write("123456789\n") # 输出:9
路径:
- 绝对路径 – 从根目录开始:C:\…\…\…
f=open("F:\pythonOpenCV\python基础入门\小姐姐电话号码","r",encoding="utf-8") print(f.read())
- 相对路径打开文件, …/ 返回上一层
1.3 a操作: 追加写
说明:在源文件的基础上继续写
f=open("小姐姐电话号码","a",encoding="utf-8") f.write("13843888888\n") f.write("405651888888\n")
源文件:
2 rb、wb、ab
f1=open("1.jpg","rb") print(f1.read()) #读取全部文档 print(f1.read(3)) #读取前三个字节 # 一般用于爬虫,爬取图片 f=open("3.jpg","wb") f.write(f1.read())
3 r+、w+、a+
3.1 r+操作:读写
错误操作:先写后读
f=open("小姐姐电话号码","r+",encoding="utf-8") f.write("憨憨最憨\n") print(f.read())
正确操作:先读后写
f=open("小姐姐电话号码","r+",encoding="utf-8") print(f.read()) f.write("憨憨最憨\n")
3.2 w+:清空写,读
f=open("小姐姐电话号码","w+",encoding="utf-8") f.write("憨憨最憨\n") print(f.read())
3.3 a+:追加写,读
f=open("小姐姐电话号码","a+",encoding="utf-8") f.write("憨憨最憨\n") print(f.read())
4 其他操作
4.1 tell 查看光标
f=open("小姐姐电话号码","a+",encoding="utf-8") f.write("憨憨最憨\n") print(f.tell()) # 返回字节数
结果:
文件内容: 憨憨最憨 憨憨最憨 输出: 28
解释:
ascii – 没有中文
gbk – 英文8b,1B,中文16b 2B
unicode – 英文 16b 2B,中文32b 4B
UTF-8 – 汉字编码占用3个字节;
4.2 seek 移动光标
两个参数:
seek(0,0) – 移动到文件的头部
seek(0,1) – 当前位置
seek(0,2)– 移动到文件的末尾
一个参数:
seek(3) – 按照字节进行移动(按照编码集进行计算)
print(f.seek(0,2)) #将光标移动到指定位置 print(f.read())
4.3 文件修改
说明:把文件里面的内容修改
源文件:
f=open("小姐姐电话号码","r",encoding="utf-8") s=f.read() s1=s.replace("最","太") print(s1) # 换完之后再写入文件 f=open("小姐姐电话号码","w",encoding="utf-8") f.write(s1)
结果:
存在问题:
- 原来文件未被保留
- 先读后写耽误时间
- 文件未被关闭
- 可能有时候需要一下打开很多文件
解决办法:
(1) with:关键字 open® as f,open(w) f1:
(2)---------文件的具体操作
with open("小姐姐电话号码","r",encoding="utf-8") as f,open("小姐姐电话号码.txt","w",encoding="utf-8") as f1: for i in f: s1 = i.replace("最", "太爱") f1.write(s1)
更改文件名
# import os # os.rename("小姐姐电话号码.txt","小姐姐电话号码.bak")