1.文件操作初识
操作文件的方式:
f = open("文件路径","mode="模式",encoding = "编码)
open: 调用操作系统打开文件.
mode: 对文件的操作方式.
encoding: 文件的编码,而存储编码一定要统一.
在国内: win :gbk Linux: utf- 8 Mac: utf- 8
最常用的就是utf - 8
f 叫做文件句柄-------操作文件时相当于一个东西的把手
文件操作都有:
读: r
写: w(这个是清空了重新写) , a(这个则是在后面追加着写)
读: rb
写: wb, ab
2.文件的读
读: r rb r+ r+b
r: 这种读的模式是文件全部读完之后,接着再次读取就没有内容
f = open ("a",mode = "r",encoding = "gbk")
content = f . read() 全部读取
c1 = f . read(4) 这个值读取字符,数字代表读取几个字符
print(f . readline(3)) 读取一行中的几个字符,数字代表读取着行中的几个字符
print(f.readlines()) 这个是一行一行读取,存储在列表中 代表换行
路径
F:a111.txt 这个是绝对路径,从磁盘的根处查找
相对路径 :相对于当前文件进行查找
import os
print(os.getcwd()) 这个是查看当前工作路径的操作
当文件特别大时,要防止内存溢出,所以要一行一行读取
for i in f:
print(i) 迭代读取
3.文件的写
写: w:清空写,
1.先判断有没有文件存在,文件存在清空文件,文件不存在创建文件
2.写入内容
a: 追加写,在文件的末尾添加
w 在进行写的操作时,一般分了两步:
没有文件,创建文件,有文件清空文件再写入
f = open("day08",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("123")
这个是在文件末尾添加
4.读以及写非文本文件
f = open("1.jpg",mode="rb")
rb: 不能指定编码,读非文本文件(不能指定编码意思是不能指定gbk之类的,encoding不能写)
这个时候读是按字节读出来的
wb. ab 不能指定编码,写非文本文件
print(f.read()) read() 全部读取
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.文件的+模式
r:读 r+: 读写
w:写 w+:写读
a: 写 a+:写读
r+:读写 先读后写
正确的格式: -----后期开发中使用频率不是很高
f = open("day",mode="r+",encoding="utf-8")
print(f.read())
f.write("你好啊")
错误示范----这是因为先写的话后面再读的时候光标就会在最后的地方,然后就读取不到内容
f = open("day8",mode="r+",encoding="utf-8")
f.write("你好啊")
print(f.read()
w+ 写读 先写后读
f = open("day08",mode="w+",encoding="utf-8")
f.write("你好啊安达市多")
print(f.read())
a+ 追加写读 先写后读
f = open("a",mode="a+",encoding="gbk")
print(f.tell()) # 查看的是字节
f.seek(0)
print(f.read(1)) # 字符
f.write("真的废物")
其他操作:
查看光标: tell() 返回值,返回的值就是当前光标的位置,是以字节的大小呈现
移动光标:
seek(0,0) 移动光标到文件起始位置
seek(0,1) 移动光标到文件当前位置
seek(0,2) 移动光标到文件末尾位置
seek(3) 按照字节调整,使用编码utf-8时最小单位是3,gbk时是2
6.文件的另一种打开方式
with.open("day08",mode="r",encoding="utf-8")as f,
open("a",mode="w",encoding="gbk")as f1:
print(f.read())
f1.write("真饿")
上下文管理,后面会用到
使用with open可以同时操作多个文件,也可以帮助自动关闭文件
7.文件的修改
with open("原文件")as f,open("新文件")as f1:
f.for循环的读取
f1.for循环的写入
with open("day8",mode="r+",encoding="utf-8")as f:
content = f.read()
content = content.replace("您","你")
f.write(content)
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.rename("原文件名字",备份名字") # 对原文件进行备份
os.rename("新文件名字","原文件名字") # 把新文件改成原文件的名字