同步IO和异步IO
读写文件
with语句自动调用close()方法,with简化try...except...finally的处理流程,通过__enter__方法初始化,然后在__exit__中做异常处理或资源释放
with open("1.txt", "r") as f:
print(f.read())
read()
read(size)
readline()
line.strip()把结尾的"\n"去掉
可以处理file-like-object
读取二进制文件:open("1.jpg", "rb")
处理字符编码:encoding="utf-8", errors="ignore"
写文件:open("1.txt", "wa"),a:append,以追加方式写入
使用with语句操作文件io
StringIO:在内存中读写str
BytesIO:在内存中读写bytes
操作文件或目录
import os
os.environ
os.name
os.path:操作路径
os.path.abspath(".") # 绝对路径
os.path.join("", "") # 生成完整路径,根据不同的操作系统环境插入不同的分隔符,不要使用拼接字符串的方式
os.path.split("") # 拆分最后一级文件或目录名
os.path.splitext("") # 得到文件后缀
os.path.exists() # 判断文件或文件夹是否存在
os.path.basename() # 文件名(有后缀)或文件夹名
os.path.dirname() # 文件所在文件夹路径
os.mkdir() # 创建文件夹
os.rename() # 重命名
os.remove() # 删除
os.listdir() # 列出当前目录下所有文件和目录
序列化
把变量从内存中变成可存储或传输的过程称为序列化
python中叫pickling,使用pickle模块来实现序列化
pickle.dump()
pickle.load(f)
json模块可以实现python对象和json对象的转换
json.dump()
json.loads()
def student2dict(std):
return {
"name": std.name,
"age": std.age
}
json.dump(s, default=student2dict)
def dict2student(d):
return student(d["name"], d["age"])
json.loads(stu_str, object_hook=dict2student)