第三十五篇 os模块、sys模块、json模块、pickle模块

一、os模块

os模块和操作系统交互,主要用于文件操作

import os
# test.py文件中

# os.mkdir() 一个路径参数和一个字符串参数。如果有路径参数,则在该路径下创建一个新的文件夹;如果无路径参数,则在当前文件的同级路径下创建一个新的文件夹
os.mkdir('king')  # 创建了和test.py文件同级目录下的名为king的文件夹

# os.removedirs() 一个路径参数。递归往上移除空文件夹(无法移除.py的空文件)
os.removedirs(r'B:pythontestsys模块kongwenjianjia')

# os.rmdir() 一个路径参数。移除指定的空文件夹
os.rmdir(r'B:pythontestsys模块kongwenjianjia')

# os.listdir()  一个路径参数。列出文件夹内的所有文件名和隐藏文件名(只打印该文件夹下的同级文件名,不会打印同级文件的下一级文件名)
res = os.listdir(r'B:pythontest')  # 得到一个生成器
for s in res:
    print(s)
    
# os.remove()  一个路径参数。删除指定文件(无法删除文件夹)
os.remove(r'B:pythontestjsonandoswenjian.py')

# os.environ 打印环境变量。environ相当于一个变量名,用于接收环境变量
print(os.environ)

# os.path.dirname(__file__)  获取当前文件的路径
os.path.dirname(__file__)
os.path.dirname(os.path.dirname(__file__))   # 获取当前文件的上一级文件的路径

# os.path.abspath()  一个路径参数。获取文件的绝对路径
os.path.abspath(__file__)  # 获取当前文件的绝对路径
os.path.abspath(r'B:pythontest','king.py')  # 获取指定文件的绝对路径

# os.path.append() 一个路径参数。用于执行文件添加环境变量
os.path.append(r'B:pythontestaaam1.py')  # 将m1的查找路径添加到执行文件的环境变量中,可以用于导入模块m1中的函数

# os.path.exists() 一个路径参数。判断文件是否存在,存在返回True
bool_res = os.path.exists(r'B:pythontestaaam1.py')
print(bool_res)

# os.path.join()  两个路径参数。拼接文件路径
path_res = os.path.join(r'B:pythontest','king.py')
print(path_res)  # B:pythontestking.py

# os.path.getsize()  一个路径参数。计算文件大小
file_size = os.path.getsize(r'B:pythontest6.10练习.py')
print(file_size)   # 1084

# os.walk()  一个路径参数。打印文件夹下所有文件夹和文件
ress = os.walk(r'B:pythontest')   # 得到一个生成器
for st in ress:
    print(st)

二、sys模块

作用:与python解释器进行交互

import sys
# sys.argv[0]表示代码本身文件路径,当我们在cmd中使用它时,可以把它看成一个从程序外部获取参数的桥梁。当我们获得多个参数时,获得是一个列表。其实可以把sys.argv看作是一个列表,而我们可以通过索引取到想要的值
sys.argv[0]  # 表示代码所在的文件本身,也即是sys.argv的第一个值
sys.argv[1]  # 取第二个元素
sys.argv[0:]  # 取出所有元素

当我们用sys.argv[0:]时,如下图

# sys.hexversion  获取解释器版本信息
print(sys.hexversion)

# sys.stdout  c语言写的。print就是用它写的
# sys.stdout.write()    

# sys.stdin      用c写的。input用它写的
# sys.stdin.read()    # 输入字符有限 
# sys.path
# sys.path.append()  一个路径参数。添加环境变量
sys.path.append(r'B:pythontestking.py')  # 在执行文件的搜索路径中添加路径

三、json模块

一般保存字典类型的数据

import json

1.序列化:将数据按规定格式,从内存写入到硬盘的过程

2.反序列化:将数据从硬盘读取到内存的过程

3.所有的语言都有json文件,json文件可用于跨平台/跨语言传输数据

dump和load

1.json文件保存,以字符串形式存入

# 字典、列表、字符串、bool、None、数字类型
dic = {'name':'king'}

with open('info.json','w',encoding='utf8') as fw:
	json.dump(dic,fw)

2.打开json文件,存之前是什么格式,取出来就是什么格式,一般存之前是字典,所以取出的多是字典形式的数据

with open('info.json','r',encoding='utf8') as fr:
	json.load(fr)

四、pickle模块

pickle模块支持python中的任意数据类型存成pickle文件,所以不能跨平台/跨语言(不同平台的函数一定是不同的),pickle模块序列化的过程是以二进制形式转化的

import pickle
def func():
	print('hello')
	
# 由于pickle传输的是二进制形式的数据,所以应该用b模式来读写
with open('func.pkl','wb') as fw:
	pickle.dump(func,fw)
	
# 读取文件
with open('func.pkl','rb') as fr:
	pickle.load(fr)
原文地址:https://www.cnblogs.com/itboy-newking/p/11038871.html