python之文件操作的初识
1. 操作文件
1.1 操作的方法
f = open("文件路径",mode="模式",encoding="编码")
open() # 调用操作系统打开文件
mode # 对文件的操作方式
encoding # 文件的编码 -- 存储编码要统一
win -- gbk
linux -- utf-8
mac -- utf-8 最常用的就是utf-8
1.2 mode的种类(识记)
r 读
w 清空写
a 追加写
rb 二进制读
wb 二进制写
ab 二进制追加写
r+ 读写
r+b 读写非文本文件
f 文件句柄操作文件的相当于锅把
2. 文件的读
2.1读
文件全部读取完后以后,再次读取就没有内容(识记点)
2.2 读的方法:(识记)
f = open("a",mode="r",encoding="gbk")
print(f.read()) # 全部读取
print(f.read(3)) # 字符读取
print(f.readlin(()) # 读取一行内容中多个字符
print(f.readlins(()) # 一行一行读取,存储到列表中 \n是换行
2.3 文件的路径
绝对路径: 从磁盘的根处查找
相对路径: 相对于当前文件进行查找的
import os
print(os.getcwd()) *# 查看当前工作路径*
print(repr("F:\a\文件初识.txt"))
print("F:\a\文件初识.txt")
2.4 for循环操作方法
一行一行读取 -- 防止内存溢出
f = open("a",mode="r",encoding="gbk")
for i in f: # 迭代读取
print(i)
3. 文件的写
3.1 写的方法
w 清空写
w 分为两步
1. 没有文件,创建文件,有文件清空文件
2. 再写入
a 追加写
f = open("day8",mode="w",encoding="utf-8")
f.write("123")
f.close() # 关闭文件
3.2 操作文件过程
1.打开文件
2.操作文件
3.关闭文件
例题
f = open("a",mode="r",encoding="gbk")
print(f.read())
f.close() # 关闭文件后就不能继续读取了
f = open("a",mode="a",encoding="gbk")
f.write("啊啊啊,好困啊")
在文件末尾添加
4. 读以及写非文本文件
4.1 读非文本文件的方法
f = open("1.jpg",mode="rb") # rb ,wb,ab 不能指定编码
print(f.read()) # read() 全部读取
print(f.read(3)) # 3表示读取前3个字节
4.2 写非文本文件的方法
import requests
ret = requests.get("http://www.521609.com/uploads/allimg/151124/1-1511241G251317.png")
f = open("2.jpg",mode="wb")
f.write(ret.content)
f.close()
5. 文件的+模式
5.1 mode种类 (识记)
r 读 r+ 读写
w 写 w+ 写读
a 写 a+ 写读
5.2 错误示范
f = open("day8",mode="r+",encoding="utf-8")
f.write("你好啊")
print(f.read())
# 这里mode用的是r+读写模式,识记实际操作是写读模式,所以错误❌操作
5.3 正确示范
f = open("day8",mode="r+",encoding="utf-8")
print(f.read())
f.write("脑瓜疼啊脑瓜疼")
# -- 后期开发中使用频率比较低
5.4 w+ 写读
f = open("day8",mode="w+",encoding="utf-8")
f.write("你您你你")
print(f.read())
5.4 a+ 追加写读
f = open("a",mode="a+",encoding="gbk")
print(f.tell()) # 查看的是字节
f.seek(0)
print(f.read(1)) # 字符
f.write("真的废物")
5.5 其他操作
5.5.1 查看光标
tell() 返回值 返回的就是当前光标的位置
5.5.2 移动光标
seek(0,0) 文件开始位置
seek(0,1) 光标的当前位置
seek(0,2) 文件末尾位置
seek(3) 按照字节调节 使用utf-8是3 gbk是2
6.with open 打开文件的方式
6.1 方法:
with open("day8",mode="r",encoding="utf-8") as f: # 面向对象中上下文管理
print(f.read())
-
with open 帮助自动关闭文件
-
with open 同时操作多个文件
6.2 例题:
with open("day8",mode="r",encoding="utf-8") as f,\
open("a",mode="w",encoding="gbk") as f1:
print(f.read())
f1.write("真饿!")
7.文件的修改
7.1 内容替换
with open("day8",mode="r+",encoding="utf-8")as f:
content = f.read() # 先读
content = content.replace("您","你") #将您替换成你
f.seek(0,0) # 将光标移动到行首位置
f.write(content) # 将内容写入文件
7.2 文件的修改
原理: 打开一个旧文件,同时打开一个新的文件
with open("day8",mode="r",encoding="utf-8")as f,\ # 打开一个旧的文件
open("new_day8",mode="a",encoding="utf-8")as f1: # 打开一个新的文件
for i in f: # 循环旧文件中的内容
content = i.replace("你","我") # 将旧文件内容中的你换成我
f1.write(content) # 写入到新文件中
# 关键的来了
import os # 导入系统模块 # 备份原数据(重新起个名字),然后删除原文件
os.remove("day8") # 原数据可以使用rename来做备份
os.rename("new_day8","day8") # 将替换后的新文件改名成旧文件名字
代码统计
# 文件夹的打开:
f = open("文件路径",mode="模式",encoding="编码")
# 文件的读取
f = open("a",mode="r",encoding="gbk")
print(f.read()) # 全部读取
print(f.read(3)) # 字符读取
print(f.readlin(()) # 读取一行内容中多个字符
print(f.readlins(()) # 一行一行读取,存储到列表中 \n是换行
# 获取当前工作路径
import os
print(os.getcwd()) *# 查看当前工作路径*
# for循环操作方法
f = open("a",mode="r",encoding="gbk")
for i in f: # 迭代读取
print(i) #一行一行读取 -- 防止内存溢出
# 文件的写
f = open("day8",mode="w",encoding="utf-8")
f.write("123")
f.close() # 关闭文件
f = open("a",mode="r",encoding="gbk")
print(f.read())
f.close() # 关闭文件后就不能继续读取了
f = open("a",mode="a",encoding="gbk")
f.write("啊啊啊,好困啊")
在文件末尾添加