第三十五篇 os模块sys模块json模块pickle模块
Posted itboy-newking
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三十五篇 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:\pythontest\sys模块\kong\wenjianjia')
# os.rmdir() 一个路径参数。移除指定的空文件夹
os.rmdir(r'B:\pythontest\sys模块\kongwenjianjia')
# os.listdir() 一个路径参数。列出文件夹内的所有文件名和隐藏文件名(只打印该文件夹下的同级文件名,不会打印同级文件的下一级文件名)
res = os.listdir(r'B:\pythontest') # 得到一个生成器
for s in res:
print(s)
# os.remove() 一个路径参数。删除指定文件(无法删除文件夹)
os.remove(r'B:\pythontest\jsonandos\wenjian.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:\pythontest\aaa\m1.py') # 将m1的查找路径添加到执行文件的环境变量中,可以用于导入模块m1中的函数
# os.path.exists() 一个路径参数。判断文件是否存在,存在返回True
bool_res = os.path.exists(r'B:\pythontest\aaa\m1.py')
print(bool_res)
# os.path.join() 两个路径参数。拼接文件路径
path_res = os.path.join(r'B:\pythontest','king.py')
print(path_res) # B:\pythontest\king.py
# os.path.getsize() 一个路径参数。计算文件大小
file_size = os.path.getsize(r'B:\pythontest\6.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:\pythontest\king.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)
以上是关于第三十五篇 os模块sys模块json模块pickle模块的主要内容,如果未能解决你的问题,请参考以下文章
part10-1 Python常见模块(sys模块os模块)