-
os模块
-
sys模块
-
-
subprocess模块
os模块
"""该模块主要是跟操作系统打交道"""
import os
1.创建目录
os.mkdir(r'a') # 使用相对路径 在当前执行文件所在的路径下创建一个a文件夹 mkdir只能创建单级目录
os.makedirs(r'b\c\d') # makedirs可以创建单级目录 还支持创建多级目录
2.删除目录
os.rmdir(r'a') # 删除单级目录 只能删除空的单级目录
os.removedirs(r'c') # 可以删除单级目录
os.removedirs(r'D:\pythonProject1\b\c\d') # 删除目录之后如果外层的目录也是空的则继续删除
3.查看某个路径下的所有的文件名称(文件、文件夹)
print(os.listdir())
print(os.listdir(r'\D:\pythonProject1'))
4.删除文件、重命名文件
os.remove(r'1.txt')
os.rename(r'1.txt',r'666.txt')
5.获取当前路径、切换路径
print(os.getcwd())
os.chdir(r'D:\pythonProject1')
print(os.getcwd())
6.软件开发目录规范 启动脚本兼容性操作
os.path.dirname(__file__) # 动态获取当前文件执行文件所在的绝对路径 D:/pythonProject1
os.path.dirname(os.path.dirname(__file__)) # 每嵌套一层就是往上切换一层 D:/
os.path.abspath(__file__) # 动态获取当前文件自身的路径 D:\pythonProject1\time.py
7.判断文件是否存在
print(os.path.exists(r'1')) # Flase 判断所给的路径是否存在
print(os.path.exists(r'time.py')) # True 判断所给的路径是否存在
print(os.path.isdir(r'01.py')) # False 判断路径是否是一个文件夹
print(os.path.isfile(r'01.py')) # True 判断路径是否是一个文件
8.拼接路径
base_dir = 'a'
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'a')) # 0bytes
print(os.path.getsize(r'1.txt')) # 80bytes
小练习
选择指定文件并打开浏览(只考虑文本文件)
展示某个文件下所有的文件名称 用户选择哪个就打开哪个
import os
# 先获取目标文件路径(动他获取 也可以省事先写死)
target_path = os.path.dirname(__file__)
full_path = os.path.join(target_path,'好康的')
# 列举该路径下所有的文件名称
file_name_list = os.listdir(full_path) # ['1.txt', '2.txt', '3.txt', '4.txt']
while True:
# 循环展示每个文件名称
for i,j in enumerate(file_name_list,start=1):
print(i,j)
# 获取用户选择的编号
target_num = input('请输入您想要查看的文件编号:').strip()
# 判断是否为纯数字
if target_num.isdigit():
# 如果是纯数字 转换为整型
target_num = int(target_num)
# 判断数字在不在数量范围内
if target_num in range(1,len(file_name_list) + 1):
# 获取文件名称
file_name = file_name_list[target_num - 1]
# 拼接完整路径
full_file_path = os.path.join(full_path,file_name)
# 文件操作打开文件
with open(full_file_path,'r',encoding='utf8') as f:
print(f.read())
else:
print('没有该编号的文件')
else:
print('编号只能是数字')
sys模块
"""该模块主要是跟python解释器打交道""" import sys 1.列举当前执行文件所在的sys.path(掌握) print(sys.path) 2.获取解释器版本信息(了解) print(sys.version) 3.获取平台信息(了解) print(sys.platform) 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('请输入用户名和密码 不能漏写或多写') try: username = sys.argv[1] password = sys.argv[2] except Exception: print('请输入用户名和密码') else: if username == 'jason' and password == '123': print('可以正常执行该文件') else: print('用户名或密码错误 没有该文件的执行权限')
json模块
'''json是一个序列化模块 主要用于跨语言传输数据'''
1.json格式数据是不同变成语言之间数据交互的媒介
2.json格式数据的具体特征
结论1中有一个细节:数据基于网络传输肯定是二进制格式
在python中bytes类型的数据可以直接看成二进制数据
python中只有字符串可以转成bytes类型!!!(编码encode())
由上述推论可知 json格式数据 本质应该属于字符串类型
双引号是json格式数据独有的标志符号
具体操作
json.dumps() 序列化
将python数据类型转换成json格式字符串
json.loads() 反序列化
将json格式字符串转换成对应的数据结构
import json
d = {'name':'faker','age':27}
res = json.dumps(d)
print(res,type(res)) # <class 'str'> json格式字符串
encode_str = res.encode('utf8')
'''假设将该字符串基于网络发给了另一个python程序'''
# 先将bytes类型转换成字符串
json_str = encode_str.decode('utf8')
print(json_str,type(json_str))
res1 = json.loads(json_str)
print(res1,type(res1)) # {'name': 'faker', 'age': 27} <class 'dict'>
"""
如果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.stdout.read().decode('utf8')) # 获取错误命令之后的结果
"""
该模块可以实现远程操作其他计算机的功能
动态获取命令执行并返回结果
eg:类似于Xshell软件的功能
"""
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)