os模块补充:
os.path.abspath(path)
1,把路径中不符合规范的/改成操作系统默认的格式
2,能够给能找到的相对路径改成绝对路径
os.path.split(path)
把一个路径分成两半,第二段是一个文件或者文件夹(把最后一个文件或文件夹分出来),得到的是元组
os.path.dirname(path) 得到的是os.path.split(path)的第一个元素
os.path.basename(path) 得到的是os.path.split(path)的第二个元素
os.path.exists(path) 判断文件或文件夹是否存在,返回的是bool
os.path.isabs(path) 判断是不是一个绝对路径
os.path.isfile(path) 判断文件是否存在
os.path.isdir(path) 判断某个目录是否存在
os.path.join(path1[, path2[, ...]]) 拼接路径
os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path的大小
1,查看文件大小(字节)
2,所有的文件夹都至少是4096 或者是8192字节,成倍增长
使用python无法统计出每个文件夹的大小
os.system("bash command") 执行字符串数据类型的操作系统命令
os.popen("bash command).read() 执行字符串数据类型的操作系统命令,并返回结果
os.getcwd() 获取当前执行命令的时候所在的目录
os.chdir("dirname") 修改当前执行命令的时候所在的目录

使用os模块计算某个文件夹内文件大小的总和:
1,递归写:
import os
def func(filepath):
size_sum = 0
files = os.listdir(filepath)
for file in files:
f_d = os.path.join(filepath,file)
if os.path.isdir(f_d):
size = func(f_d)
size_sum += size
else:
size_sum += os.path.getsize(filepath)
return size_sum
print(func(r'C:\Users\LIANG\Desktop\pythonS15\python学习s15'))

2,循环写
lst = [r'D:\sylar\s15',]
size_sum = 0
while lst:
path = lst.pop()
path_list = os.listdir(path)
for name in path_list:
abs_path = os.path.join(path,name)
if os.path.isdir(abs_path):
lst.append(abs_path)
else:
size_sum += os.path.getsize(abs_path)
print(size_sum)

****************************************************************************************************
****************************************************************************************************

序列化模块:
把其他的数据类型转换成 字符串和bytes类型,就是序列化的过程
为什么要把其他数据类型转换成字符串:
能够在网络上传输的,只能是bytes,能够存储在文件中的只有bytes和str
三种情况不能用eval:
用户输入
网络上接收的数据
文件中的内容
你已知的代码,但是需要一些拼接,根据自己的逻辑去做拼接

json:
json.dumps() 序列化 数据类型转成字符串
json.loads()反序列化 字符串转成数据类型
在内存中做数据转换
json.dump() 序列化 数据类型 写入 文件
json.load() 反序列化 从文件中读出数据类型
直接将数据类型写入文件,直接从文件中读出数据类型
可以多次dump,但是要换行写入,否则load的时候读不出来,一行一行写入才能读出来
缺点:
1,json能够处理的数据类型是非常有限的,只支持字符串,列表,字典,数字
2,字典中的key只能是字符串
优点:
json是所有语言都通用的一种序列化格式
在python中序列化的,在其他语言就可以反序列化
如果在文件中记录字典的话,字典的key必须是双引号引起来的,否则就会报错

pickle:
pickle.dumps() 序列化的结果只能是字节
pickle.loads()
pickle.dump()
pickle.load()

特点:
1,序列化的结果只能是字节
2,支持在python中几乎所有的数据类型
3,只能在python中使用
4,在和文件操作的时候,需要用rb wb的模式打开文件
5,可以多次dump 和 多次load