os模块和序列化

#os模块
和操作系统交互的模块
import os
#os.makedirs(‘dir1/dir2’) #创建多个文件夹
#os.mkdir(‘dir3’) #创建一个文件夹
#os.removedirs('dir3/dir4) #删除多个空文件夹
#os.rmdir(‘dir3/dir4’) #删除一个空文件夹
#os.listdir(‘E:\python’) #获取目录下的所有文件和文件夹
file_lst = os.listdir(‘E\python’)
for path in file_lst:
print(os.path.join(‘E\python’,path))

#os.stat() #获取文件的信息和目录
#exec/eval 执行的是字符串数据类型的python代码
#os.system和os.popen 执行字符串数据的命令行代码
#os.system(‘dir’) #负责执行操作系统的命令,没有返回值,实际操作/删除,创建文件夹
#os.popen()
#ret = os.popen(‘dir’) #适合查看类的操作
#s =ret.read()

print(os.getcwd()) #current work dir当前工作目录
#并不是指当前文件所在目录,当前文件是在哪个目录下执行的

#os.chdir() #改变当前工作目录

#把路径中不符合规范的/改成操作系统默认的格式
#能够给能找到的相对路径改成绝对路径
path = os.path.abspath(‘E:/python’)
print(path)

#把一个路径分成两段,第二段是一个文件/文件夹
path = os.path.split(‘E:/python’)
print(path)
os.path.dirname()
os.path.basename()
os.path.exists(‘E:/python’) #查看文件/文件夹是否存在
os.path.isabs(‘E:/python’) #判断是否是绝对路径
print(os.listdir(‘E:/python’))
os.path.isdir(‘E:/python’) #判断是否是文件夹
os.path.isfile(‘E:/python’) #判断是否是文件
os.path.join(‘E:/python’,‘aaa’) #拼接路径
os.path.getsize(‘E:/python’) #查看文件大小
#无法使用python代码统计一个文件夹中所有文件的总大小

##计算一个文件夹的大小
#递归
def func(path):
size_sum = 0
name_lst = os.listdir(path)
for name in name_lst:
path_abs = os.path.join(path,name)
if os.path.isdir(path_abs):
size = func(path_abs)
size_sum += size
else:
size = os.path.getsize(path_abs)
size_sum += size
return size_sum
ret =func(‘E:/python’)
print(ret)
#存在文件碎片会导致微弱出入

#循环 堆栈思想
l = [‘E:/python’]
size_sum = 0
while l:
path = l.pop() #列表满足先进来的后出去
path_lst = os.listdir(path)
for path_name in path_lst:
path_abs = os.path.join(path,path_name)
if os.path.isdir(path_abs):
l.append(path_abs)
else:
size_sum += os.path.getsize(path_abs)
print(size_sum)

#序列化
#序列:列表,元组,字符串,bytes
#把其他数据类型转换成字符串/bytes是序列化过程
dic ={‘key1’:‘value’,‘key2’:‘value2’}
import json
ret = json.dumps(dic) #序列化
print(ret,type(ret))
res = json.loads(ret) #反序列化
print(res,type(res))
#json能够处理的数据类型是非常有限的:字符串 列表 字典 数字
#字典中的key只能是字符串
#json 在所有的语言之间都通用

#向文件中记录字典
import json
dic ={‘key1’:‘value’,‘key2’:‘value2’}
ret = json.dumps(dic)
with open(‘json_file’,‘a’)as f:
f.write(ret)

#从文件中读取字典
with open(‘json_file’,‘r’)as f:
dic_str = f.read()
dic = json.loads(dic_str)
print(dic.keys())

#dump load 是直接操作文件的
dic ={‘key1’:‘value’,‘key2’:‘value2’}
with open(‘json_file’,‘a’)as f:
json.dump(dic,f)

with open(‘json_file’,‘r’)as f:
dic = json.load(f)
print(dic.keys())

#pickle模块
#支持在python中几乎所有的数据类型
import pickle
dic = {(1,2,3):{‘a’,‘b’},1:‘abc’}
ret = pickle.dumps(dic)
print(dic)
#1.dumps 序列化的结果只能是字节
print(pickle.loads(ret))
#2.只能在python中使用
#3.在文件操作的时候,需要用wb/rb的模式打开文件
#4.可以多次dump和load
#dump
with open(‘pickle_file’,‘wb’) as f:
pickle.dump(dic,f)
#load
with open(‘pickle_file’,‘rb’) as f:
ret =pickle.load(f)
print(ret,type(ret))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值