常用模块(二)
内容概要
-
os模块
-
sys模块
-
json模块
-
subprocess模块
os模块
os模块主要是跟操作系统打交道
import os # 1.创建目录及文件夹 os.mkdir(r'name') # 运行后 在当前执行文件所在得路径创建name文件夹当文件存在时报错 "mkdir 只能创建单级目录" os.makedirs(r'user\info') # makedirs支持创建多级目录 也可支持创建单级级目录 # 2.删除目录(文件夹) # 可以删除指定路径的空的单级目录 删除的是name目录下的info目录 os.rmdir(r'name\info') # 可以删除空的单级目录 但当删除目录之后如果外层的目录也是空的则继续删除 os.removedirs(r'D:\PyWork\Py基础\模块\name\info') # 3.查看某个路径下所有的文件名称(文件、文件夹) print(os.listdir()) # 查看当前执行文件所在目录下的所用目录 print(os.listdir(r'D:\\')) # 这是在windows系统下的用\ macos用的是/ # 4.删除文件、重命名文件 os.remove(r'b.txt') # 不管文件有无内容都会被删除 os.rename(r'bbb.txt', r'b.txt') # 文件重命名 # 5.获取当前路径、切换路径 print(os.getcwd()) # 获取当前执行文件所在目录的路径 os.chdir(r'D:\SoftWare') # 切换指定路径 print(os.getcwd()) # D:\SoftWare # 6.软件开发目录规范 启动脚本兼容性操作 print(os.path.dirname(__file__)) # 动态获取当前执行文件所在的绝对路径 D:/PyWork/Py基础/模块 print(os.path.dirname(os.path.dirname(__file__))) # 每嵌套一层就是往上切换一层 D:/PyWork/Py基础 print(os.path.abspath(__file__)) # 动态获取当前执行文件自身的路径 D:\PyWork\Py基础\模块\os模块.py # 7.判断文件是否存在 print(os.path.exists(r'bin')) # True 判断所给的路径是否存在 print(os.path.exists(r'log\log.log')) # True 判断所给的路径是否存在 print(os.path.isdir(r'user\info')) # True 判断路径是否是一个文件夹 print(os.path.isdir(r'abc.py')) # False 判断路径是否是一个文件夹 print(os.path.isfile(r'a.txt')) # True 判断路径是否是一个文件 print(os.path.isfile(r'user\info')) # False 判断路径是否是一个文件 # 8.拼接路径(极容易忽略) base_dir = 'ATM' exe_dir = '01 作业讲解.py' '''拼接成py文件的路径''' print(base_dir + '/' + exe_dir) # 路径分隔符在不同的系统下是不一样的 使用加号的话兼容性极差 res = os.path.join(base_dir, exe_dir) # 能够自动识别当前操作系统的分隔符 print(res) # 9.获取文件大小(字节 bytes) print(os.path.getsize(r'D:\PyWork\Py基础\模块')) # 4096bytes print(os.path.getsize(r'b.txt')) # 10bytes
sys模块
sys模块主要是跟python解释器打交道
import sys # 1.列举当前执行文件所在的sys.path(掌握) print(sys.path) # 2.获取解释器版本信息(了解) print(sys.version) # 3.获取平台信息(了解) # print(sys.platform) # win32 # 4.自定义命令行操作 print(sys.argv) """ cmd终端可以使用windows+r并输入cmd唤起 也可以在pycharm直接使用快捷方式Terminal 模拟cmd并自动切换到当前执行文件所在的路径下 """ if len(sys.argv) == 3: # 这里的判断也可以变成异常捕获的形式 username = sys.argv[1] password = sys.argv[2] if username == 'jason' and password == '123': print('可以正常执行该文件') else: print('用户名或密码错误 没有该文件的执行权限') else: print('请输入用户名和密码 不能漏写或多写') # cmd下运行 # D:\PyWork\Py基础\模块>python36 os模块.py # os模块.py # 请输入用户名和密码 不能漏写或多写 # 加入异常 try: username = sys.argv[1] password = sys.argv[2] except Exception: print('请输入用户名和密码') else: if username == 'jason' and password == '123': print('可以正常执行该文件') else: print('用户名或密码错误 没有该文件的执行权限') # D:\PyWork\Py基础\模块>python36 os模块.py # 请输入用户名和密码
json模块
json是一个序列化模块 主要用于跨语言传输数据
1. json格式数据是不同变成语言之间数据交互的媒介 2. json格式数据的具体特征 数据基于网络传输都是是二进制格式 在python中bytes类型的数据可以直接看成是二级制数据 python中只有'字符串数据'可以转成'bytes类型'(编码encode()) # 由上述推论可知 json格式数据 本质应该属于字符串类型 import json '''双引号是json格式数据独有的标志符号''' d = {'username':'Tom','pwd':666} print(d, type(d)) # {'username': 'Tom', 'pwd': 666} <class 'dict'> # json格式 res = json.dumps(d) print(res, type(res)) # json格式>>> {"username": "Tom", "pwd": 666} <class 'str'> # 字符串类型 print(str(d),type(str(d))) # {'username': 'Tom', 'pwd': 666} <class 'str'>
json具体操作
import json d = {'username':'Tom','pwd':666} print(d, type(d)) # 此时数据类型为字典 {'username': 'Tom', 'pwd': 666} <class 'dict'> res = json.dumps(d) # 转成json格式 print(res, type(res)) # json格式字符串 {"username": "Tom", "pwd": 666} <class 'str'> encode_str = res.encode('utf8') # 进行编码 '''假设将该字符串基于网络发给了另外一个python程序''' # 先将bytes类型转换成字符串 json_str = encode_str.decode('utf8') # 解码 print(json_str,type(json_str)) # json格式{"username": "Tom", "pwd": 666} <class 'str'> res1 = json.loads(json_str) print(res1, type(res1)) # 原来的字典 {'username': 'Tom', 'pwd': 666} <class 'dict'> """ json.dumps() 序列化 将python数据类型转换成json格式字符串 json.loads() 反序列化 将json格式字符串转换成对应的数据类型 """ # 在文件上操作时 d = {'username':'Tom','pwd':666} # 将上述字典写入文件 with open(r'a.txt','w',encoding='utf8') as f: # f.write(d) # f.write(str(d)) # f.write(json.dumps(d)) json.dump(d, f) # 将文件内容获取出来 with open(r'a.txt','r',encoding='utf8') as f: # data = f.read() # res = json.loads(data) # print(res, type(res)) data = json.load(f) print(data, type(data)) """ 如果json模块需要配合文件一起使用的话 有固定的方法 json.dump() 将其他数据类型直接写入文件(自动转json格式字符串) json.load() 将文件数据直接转成对应的数据类型(自动反序列化) """
支持序列化数据类型
Python 数据类型 | JSON |
---|---|
dict | object |
list, tuple | array |
str | string |
int, float | number |
True | true |
False | false |
None | null |
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')) # 获取错误命令执行之后的结果 """ 该模块可以实现远程操作其他计算机的功能 动态获取命令执行并返回结果 eg:类似于Xshell软件的功能 """
本文来自博客园,作者:{Mr_胡萝卜须},转载请注明原文链接:https://www.cnblogs.com/Mr-fang/p/16078986.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人