os模块、sys模块、json模块、subprocess模块
今日学习内容总结
os模块
os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,这时就离不了os模块。
os模块常用指令
1.创建目录
import os
os.mkdir(r'a') # 使用相对路径 在当前执行文件所在的路径下创建一个a文件夹
os.mkdir(r'b/c') # mkdir只能创建单级目录
os.makedirs(r'c') # makedirs可以创建单级目录
os.makedirs(r'b/c/d') # makedirs支持创建多级目录
2.删除目录
import os
os.rmdir(r'a') # 可以删除单级目录
os.rmdir(r'b') # 只能删空的单级目录
os.removedirs(r'c') # 可以删除单级目录
os.removedirs(r'C:\Users\Administrator\Desktop\Typora\day15\day15\b\c\d') # 删除目录之后如果外层的目录也是空的则继续删除
3.查看文件名称
import os
print(os.listdir()) # 查看当前路径下的文件名
print(os.listdir(r'')) # 查看指定路径下所有的文件和目录名
4.删除,重命名文件
import os
os.remove(r'a.txt') # 删除指定文件
os.rename(r'a.txt', r'b.txt') # 重命名指定文件
5.获取路径,切换路径
import os
print(os.getcwd()) # 获取当前目录所在路径
os.chdir(r'/xiazai') # 切换到指定路径
print(os.getcwd()) # 打印当前所在路径
6.软件开发目录规范,启动脚本兼容性操作
import os
os.path.dirname(__file__) # 动态获取当前执行文件所在的绝对路径
print(os.path.dirname(__file__)) # D:\PycharmProjects\test
os.path.dirname(os.path.dirname(__file__)) # 每嵌套一层就是往上切换一层
print(os.path.abspath(__file__)) # 动态获取当前执行文件自身的路径 D:\PycharmProjects\test\test1.py
7.判断文件是否存在
import os
print(os.path.exists(r'test1.py')) # True 判断所给的路径是否存在
print(os.path.exists(r'xiazai')) # False
print(os.path.isdir(r'D:\PycharmProjects\test')) # True 判断路径是否是一个文件夹
print(os.path.isdir(r'main.py')) # False 判断路径是否是一个文件夹
print(os.path.isfile(r'test.py')) # False 判断路径是否是一个文件
print(os.path.isfile(r'test1.py')) # True 判断路径是否是一个文件
8.路径拼接
import os
a = 'test3'
b = 'work'
print(a + '/' + b) # test3/work 路径分隔符在不同的系统下是不一样的 使用加号的话兼容性极差
res = os.path.join(a, b) # 能够自动识别当前操作系统的分隔符
print(res) # test3\work
9.获取文件大小
import os
print(os.path.getsize(r'main.py')) # 544bytes
print(os.path.getsize(r'a.txt')) # 21bytes
sys模块
sys模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数。它始终可用。sys模块包括了一组非常实用的服务,内含很多函数方法和变量,用来处理Python运行时配置以及资源,从而可以与前当程序之外的系统环境交互,如:python解释器。
常用方法:
import sys
# 列举当前执行文件所在的sys
print(sys.path)
# 获取解释器版本信息
print(sys.version)
# 获取平台信息
print(sys.platform) # win32
# 自定义命令行操作
print(sys.argv) # ['D:/PycharmProjects/test/test1.py']
cmd终端可以使用windows+r并输入cmd唤起,也可以在pycharm直接使用快捷方式Terminal,模拟cmd并自动切换到当前执行文件所在的路径下。
json模块
json是一种轻量级的数据交换格式,主要用于跨语言传输数据。同时也易于机器解析和生成。也就是说,Json是用来进行语言之间的数据交换的,它可以在任意语言之间进行。Pyhton中的json源自于JavaScript。
jason格式数据本质属于字符串类型。
双引号是json格式数据独有的标志符号:
import json
a = {'username':'jason','pwd':666}
print(a, type(a)) # {'username': 'jason', 'pwd': 666} <class 'dict'>
res = json.dumps(a)
print(res, type(res)) # {"username": "jason", "pwd": 666} <class 'str'>
print(str(a),type(str(a))) # {'username': 'jason', 'pwd': 666} <class 'str'>
# 不难看出,将a转换成json数据结构后,内容为字符串,并且是双引号的形式。
简单数据类型处理。
json模块可以直接处理简单数据类型。json.dumps()方法返回一个str对象,编码过程中会存在从python原始类型向json类型的转化过程,具体的转化对照如下:
| python | json |
|---|---|
| dict | object |
| list, tuple | array |
| str, unicode | string |
| int, long, float | number |
| True | true |
| False | false |
| None | null |
json.dumps()是把python对象转换成json对象的一个过程,生成的是字符串。而json.loads()就是将json格式字符串转换成对应的数据类型:
import json
a = {'username': 'jason', 'pwd': 666}
res = json.dumps(a)
e_str = res.encode('utf8')
j_str = e_str.decode('utf8')
print(j_str, type(j_str)) # {"username": "jason", "pwd": 666} <class 'str'>
res1 = json.loads(j_str)
print(res1, type(res1)) # {'username': 'jason', 'pwd': 666} <class 'dict'>
pickle模块
因为它不支持跨语言传输 只能识别python代码
subprocess模块
这个模块可以实现远程操作其他计算机的功能,动态获取命令执行并返回结果。
import subprocess
# ls在终端的意思就是查看当前路径下所有的文件名称
res = subprocess.Popen('ls',
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
print('stdout',res.stdout.read().decode('utf8')) # 获取正确命令执行之后的结果
print('stderr',res.stderr.read().decode('utf8')) # 获取错误命令执行之后的结果

学习内容总结
浙公网安备 33010602011771号