os模块,sys模块,json模块,subprocess模块
1. os模块
"""该模块主要是跟操作系统打交道""" import os # 1.创建目录(文件夹) # os.mkdir(r'python_cat') # 使用相对路径 在当前时执行文件所在的路径下创建一个aaa文件夹 # >>>成功 # os.mkdir(r'python_cat/123') # mkdir只能创建单级目录 # >>>报错 # os.makedirs(r'python_cat1') # makedirs可以创建单级目录 # >>>成功 # os.makedirs(r'python_cat2/python_cat3/python_cat4') # makedirs支持创建多级目录 # >>>成功 # 2.删除目录(文件夹) # os.rmdir(r'python_cat') # 可以删除单级目录 # >>>成功 # os.rmdir(r'python_cat1') # 只能删空的单级目录 # >>>成功 # os.removedirs(r'python_cat1') # 可以删除单级目录 # >>>成功 # os.removedirs(r'D:\pycharm project\pythonProject\1\python_cat2\python_cat3\python_cat4') # 删除目录之后如果外层的目录也是空的则继续删除 # >>>成功 # 3.查看某个路径下所有的文件名称(文件、文件夹) print(os.listdir()) # >>>['2.py', 'aaa'] print(os.listdir(r'D:\pycharm project')) # >>>['.idea', '4', 'pythonProject'] # 4.删除文件、重命名文件 # os.remove(r'3.txt') # >>>成功 # os.rename(r'3.txt', r'4.txt') # >>>成功 # 5.获取当前路径、切换路径 print(os.getcwd()) # >>>D:\pycharm project\pythonProject\1 # os.chdir(r'D:\pycharm project\pythonProject') # print(os.getcwd()) # >>>D:\pycharm project\pythonProject # 6.软件开发目录规范 启动脚本兼容性操作 os.path.dirname(__file__) # 动态获取当前执行文件所在的绝对路径 # >>>D:\pycharm project\pythonProject\1 res = os.path.dirname(os.path.dirname(__file__)) # 每嵌套一层就是往上切换一层 print(res) # >>>D:/pycharm project/pythonProject print(os.path.abspath(__file__)) # 动态获取当前执行文件自身的路径 # >>>D:\pycharm project\pythonProject\1\2.py # 7.判断文件是否存在 print(os.path.exists(r'3.py')) # 判断所给的路径是否存在 # >>>True print(os.path.isdir(r'python_cat')) # 判断路径是否是一个文件夹 # >>>True print(os.path.isdir(r'3.py')) # 判断路径是否是一个文件夹 # >>>False print(os.path.isdir(r'3.py')) # 判断路径是否是一个文件 # >>>True print(os.path.isfile(r'aaa')) # 判断路径是否是一个文件 # >>>False # 8.拼接路径(极容易忽略) base_dir = '1' exe_dir = '2.py' '''拼接成py文件的路径''' print(base_dir + '\\' + exe_dir) # 路径分隔符在不同的系统下是不一样的 使用加号的话兼容性极差 # >>>1\2.py res = os.path.join(base_dir, exe_dir) # 能够自动识别当前操作系统的分隔符 print(res) # >>>1\2.py # 9.获取文件大小(字节 bytes) print(os.path.getsize(r'aaa')) # 0bytes
print(os.path.getsize(r'2.py')) # 2852bytes
2. sys模块
"""该模块主要是跟python解释器打交道""" import sys # 1.列举当前执行文件所在的sys.path(掌握) print(sys.path) # >>>['D:\\pycharm project\\pythonProject\\1', 'D:\\pycharm project\\pythonProject', # 'F:\\Program Files\\PyCharm 2020.3.3\\plugins\\python\\helpers\\pycharm_display', 'F:\\Program Files\\Python3\\python38.zip', # 'F:\\Program Files\\Python3\\DLLs', 'F:\\Program Files\\Python3\\lib', 'F:\\Program Files\\Python3', # 'C:\\Users\\E\\AppData\\Roaming\\Python\\Python38\\site-packages', 'C:\\Users\\E\\AppData\\Roaming\\Python\\Python38\\site-packages\\win32', # 'C:\\Users\\E\\AppData\\Roaming\\Python\\Python38\\site-packages\\win32\\lib', 'C:\\Users\\E\\AppData\\Roaming\\Python\\Python38\\site-packages\\Pythonwin', # 'F:\\Program Files\\Python3\\lib\\site-packages', 'F:\\Program Files\\PyCharm 2020.3.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend'] # 2.获取解释器版本信息(了解) print(sys.version) # >>>3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] # 3.获取平台信息(了解) print(sys.platform) # >>>win32 # 4.自定义命令行操作 print(sys.argv) # >>>['D:/pycharm project/pythonProject/1/2.py'] """ cmd终端可以使用windows+r并输入cmd唤起 也可以在pycharm直接使用快捷方式Terminal 模拟cmd并自动切换到当前执行文件所在的路径下 """ real_username = 'dragon' real_password = 'python123' if len(sys.argv) == 3: username = sys.argv[1] password = sys.argv[2] if username == real_username and password == real_password: print('登录成功') else: print('用户名或密码错误 没有该文件的执行权限') else: print('请输入用户名和密码 不能漏写或多写') # 这里的判断也可以变成异常捕获的形式 try: username = sys.argv[1] password = sys.argv[2] except Exception: print('请输入用户名和密码') else: if username == real_username and password == real_password: print('登录成功') else: print('用户名或密码错误 没有该文件的执行权限')
3. json模块
'''json是一个序列化模块 主要用于跨语言传输数据''' # 1.参考群内截图得知json格式数据是不同变成语言之间数据交互的媒介 # 2.json格式数据的具体特征 # 结论1中有一个小细节>>>:数据基于网络传输肯定是二进制格式 # 在python中bytes类型的数据可以直接看成是二级制数据 # python中哪些数据可以转成bytes类型(编码encode()) # 只有字符串可以!!! # 由上述推论可知 json格式数据 本质应该属于字符串类型 # 双引号是json格式数据独有的标志符号!!! import json dict1 = {'username': 'dragon', 'pwd': 'python123'} print(dict1, type(dict1)) # >>>{'username': 'dragon', 'pwd': 'python123'} <class 'dict'> res = json.dumps(dict1) print(res, type(res)) # >>>{"username": "dragon", "pwd": "python123"} <class 'str'> print(str(dict1), type(str(dict1))) # >>>{'username': 'dragon', 'pwd': 'python123'} <class 'str'> '''双引号是json格式数据独有的标志符号''' dict2 = {'username': 'dragon', 'pwd': 'python321'} print(dict1) # >>>{'username': 'dragon', 'pwd': 'python123'} dict3 = '{"username":"dragon","pwd":python}' print(dict3) # >>>{"username":"dragon","pwd":python} 算json格式 dict4 = {'username': 'dragon', 'pwd': 'python123'} res = json.dumps(dict4) # 将字典序列化成json格式字符串 print(res, type(res)) # >>>{"username": "dragon", "pwd": "python123"} <class 'str'> encode_str = res.encode('utf8') print(encode_str) # >>>b'{"username": "dragon", "pwd": "python123"}' '''假设将该字符串基于网络发给了另外一个python程序''' # 先将bytes类型转换成字符串 json_str = encode_str.decode('utf8') print(json_str, type(json_str)) # >>>{"username": "dragon", "pwd": "python123"} <class 'str'> res1 = json.loads(json_str) print(res1, type(res1)) # >>>{"username": "dragon", "pwd": "python123"} <class 'dict'> """ json.dumps() 序列化 将python数据类型转换成json格式字符串 json.loads() 反序列化 将json格式字符串转换成对应的数据类型 """ # 如果不能理解跨语言传输的作用 那么权且理解下面的操作即可 dict5 = {"username": "dragon", "pwd": "python123"} # 将上述字典写入文件 with open(r'a.txt', 'w', encoding='utf8') as f: json.dump(dict5, f) # 将文件内容获取出来 with open(r'a.txt', 'r', encoding='utf8') as f: data = json.load(f) print(data, type(data)) # >>>{'username': 'jason', 'pwd': 123} <class 'dict'> """ 如果json模块需要配合文件一起使用的话 有固定的方法 json.dump() 将其他数据类型直接写入文件(自动转json格式字符串) json.load() 将文件数据直接转成对应的数据类型(自动反序列化) """
只有以下图片中的类型才能被序列化
4. subprocess模块
import subprocess # ls在终端的意思就是查看当前路径下所有的文件名称 res = subprocess.Popen('dir', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE ) print('stdout', res.stdout.read().decode('utf8', 'ignore')) # 获取正确命令执行之后的结果 # >>>stdout D еľ study # к 0E31-764F # # D:\pycharm project\pythonProject\1 Ŀ¼ # # 2022/03/30 17:44 <DIR> . # 2022/03/29 20:35 <DIR> .. # 2022/03/30 17:44 662 2.py # 2022/03/30 17:06 0 3.py # 2022/03/30 17:38 33 a.txt # 2022/03/30 17:15 <DIR> aaa # 3 ļ 695 ֽ # 3 Ŀ¼ 413,859,958,784 ֽ # # stderr # # Process finished with exit code 0 print('stderr', res.stderr.read().decode('utf8', 'ignore')) # 获取错误命令执行之后的结果 # >>>stderr """ 该模块可以实现远程操作其他计算机的功能 动态获取命令执行并返回结果 eg:类似于Xshell软件的功能 """
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通