标签:路径 关闭 操作系统 adl err 空格 字符 utf-8 不同
文件操作 就是 操作文件
文件操作的作用: 持久化存储
1.file = 路径
2.mode = 操作文件的方式
r只读文本 w清空写文本 a追加写文本 ######
rb只读字节 wb清空写字节 ab追加写字节 ###
3.encoding = 文件的编码
4.文件句柄(变量名f)
f = open("test",mode = "r",encoding = "utf-8")
打开 通过python向操作系统发送指令
文件读取时只能读一遍,执行第二遍的时候是空的
#print(f.read( )) #全部读取
print(f.read(3)) #模式的r的情况下按照字符读取
print(f.readline().strip) #读取一行
print(f.readlines()) #读取多行,以列表的形式存储 输出结果是列表形式
路径:
相对路径:相对与当前运行的文件目录
import os
print(os.getcwd( )) #工作路径(当前py文件的父级目录路径)
绝对路径:从磁盘根部开始查找的就是绝对路径
转义
f = open(r"C:\Python\test\xxxx",mode="r",encoding="utf-8")
a = f.read()
print(a)
rb 读字节 --- 爬虫 读取出来的全部是字节码
f=open("test.text","rb",encoding="utf-8")
print(f.read()) 报错! ValueError: binary mode doesn't take an encoding argument
因为rb(rb+)操作时不支持指定encoding参数 所以不写encoding 如下方式
f = open("2.png","rb")
print(f.read())
w 清空写:有文件时清空文件,没有文件时创建文件
1.打开文件时自动清空文件内容
2.写入内容
f = open("test","w",encoding="utf-8")
f.write("今日是好日,明日会更好")
f.flush() # 刷新
f.write("明日是好日,后日会更好.")
f.close() # 关闭文件
打开文件,操作文件,关闭文件
wb : 清空写字节 爬虫
f = open("1.png","wb")
f1 = open("2.png","rb")
f.write(f1.read())
追加a 一直在文件的末尾进行添加
f = open("test","a",encoding="utf-8")
f.write("wdadwa")
ab追加写字节
f = open("1.png","wb")
f1 = open("2.png","ab")
f.write(f1.read())
在f末尾追加f文本内容字节
+操作
r+ 读写 可读可写
特殊的操作:
先读后写, 写的东西在test原来存在的内容后面添加
f = open("test","r+",encoding="utf-8")
a = f.read()
f.write("这是读写啊") 可读可写
#如果只“r”的话,f.write()会报错io.UnsupportedOperation: not writable 不支持写
如果先写后读,会覆盖之前写的内容
f = open("test","r+",encoding="utf-8")
f.write("这样读取之后写入的内容会覆盖之前的内容")
f.seek(0,0) #移动光标 移动到文件头部
a = f.read()
因为是先写的,所以光标在末尾,如果不移动光标到头部,读取不到内容 (这样跟w+没有什么区别了就,所以尽量使用r+先读后写)
w+ 清空写,读
f = open("test","w+",encoding="utf-8")
f.write("哈哈哈")
f.seek(0,0) #移动光标 移动到文件头部
print(f,read())
如果不seek移动光标会读不到内容
a+:追加写,读
f = open("test","a+",encoding="utf-8")
f.write("呵呵")
f.seek(0,0) #移动光标 移动到文件头部
print(f.read())
就是先写后读,写的内容追加到末尾,然后再读都能读到,而w+是清空,读只能读到写入覆盖后的内容,a+就像r+和w+的结合体
# 最常用的是:r,w,a a+(没文件时) r+(覆盖一些内容)
# 光标
# f = open("test","r",encoding="utf-8")
# f.seek(0,0) # 移动文件头部
# f.seek(0,1) # 移动到光标当前位置
# f.seek(0,2) # 移动到文件末尾
# f.seek(3) # 移动3个字节,根据编码不同决定移动的字节大小
# print(f.read())
# print(f.tell()) # 查看光标 返回的是光标位置之前内容字节的数量
特点:
1 自动关闭文件
2 可以同时操作多个文件
as 起别名
with open("test1","r",encoding="gbk") as f,open("test","r",encoding="utf-8")as f1:
print(f.read())
print(f1.read())
"w"没文件的时候创建文件
with open("test", "r", encoding="utf-8")as f, open("test1", "w", encoding="utf-8")as f1:
for i in f:
f1.write(i.replace("嘿嘿", "sb"))
f1.flush()
import os
os.rename("test","test2")
os.rename("test1","test") 源文件test给了test2,(一个暂时不存在的) 修改过的test1给了test
标签:路径 关闭 操作系统 adl err 空格 字符 utf-8 不同
原文地址:https://www.cnblogs.com/zzsy/p/12217712.html