- os模块
- sys模块
- json模块
os模块
该模块是与操作系统交互的一个接口,主要就是跟操作系统打交道
1.创建目录(目录也就是文件夹)
os.mkdir(r'文件名称'),这是相对路径。在当前执行文件所在的路径下创建一个文件夹
mkdir只能创建单级目录,不能创建嵌层目录
os.makdirs(r'文件名称/文件名称')支持创建多层目录,兼容创建单级目录
2.删除目录
os.rmdir(r'文件夹名称')可以删除单级目录,不能删除多级目录
os.removedirs(r'内层路径'),从里面往外删,删除目录之后,如果上一层目录也是空的,就一直往上删
3.查看某个路径下所有的文件名称(文件、文件夹)
print(os.listdir()),如果文件前面带.号,就代表这是一个隐藏文件
4.1.删除文件
os.remove(r'文件名称.后缀名')
4.2.重命名文件
os.rename(r'旧文件名称.后缀名,r'新文件名称.后缀名')
5.获取当前路径
print(os.getcwd())
os.chdir(r'/Users/jiboyuan')
print(os.getcwd())
6.软件开发目录规范,启动脚本兼容性操作
os.path.dirname(__file__) # 动态获取当前执行文件所在的绝对路径
D:\day21
os.path.dirname(os.path.dirname(__file__)) # 每嵌套一层就是往上切换一层 D:\
print(os.path.abspath(__file__)) # 动态获取当前执行文件自身的路径 D:\day21\a.py
7.判断文件是否存在(结果是布尔值)
print(os.path.exists(r'A')) # 判断所给的路径是否存在
print(os.path.exists(r'xxx.py')) # 判断所给的路径是否存在
print(os.path.isdir(r'A')) # 判断路劲是否是一个文件夹
print(os.path.isdir(r'xxx.py')) # 判断路径是否是一个
print(os.path.isfile(r'A')) # 判断路径是否是一个文件
print(os.path.isfile(r'xxx.py')) # 判断路径是否是一个文件
8.拼接路径
base_dir = 'A'
exe_dir = 'xxx.py'
print(base_dir + '/' + exe_dir) # 路径分隔符1在不同的系统下是不一样的,使用加号的话兼容性很差
res = os.path.join(base_dir,exe_dir)
print(res) # 能够自动识别当前操作系统的分隔符
9.获取文件大小(字节,bytes)
print(os.path.getsize(r'A'))
SYS模式
主要是跟python解释器打交道
import sys
1.列表当前执行文件所在的sys.path
print(sys.path)
2.获取解释器版本信息
print(sys.version)
3.获取平台信息
print(sys.platform)
4.自定义命令行操作
print(sys.argv)
# 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格式数据,然后json模块再将json格式数据转换成另外一种语言
2.json格式数据的具体特征
# python中就只有字符串可以转换成bytes类型(编码encode()),所以json格式数据,本质应该属于字符串类型
# 双引号是json格式数据独有的标志符号
import json
d = {'username':'jason','pwd':123}
print(d,type(d)) # {'username':'jason','pwd':123} <class 'dict'>
# 转成json格式数据
res = json,dumps(d)
print(res,type(res)) # {"username":"jason","pwd":123} <class 'str'>
# 双引号是json格式数据独有的标志符号
print(str(d),type(str(d))) # {'username':'jason','pwd':123} <class 'str'>
d = {"username":"jason","pwd":123}
print(d) # {'username':'jason','pwd':123}
res1 = '{"username":"jason","pwd":123}'
print(res1) # {"username":"jason","pwd":123}
具体操作
d = {'username':'jason','pwd':123}
# json格式字符串
res = json.dumps(d)
print(res, type(res))
encode_str = res.encode('utf8')
#假设将该字符串基于网络发给另外一个Python程序
先将bytes类型转换成字符串
json_str = encode_str.decode('utf8')
print(json_str,type(json))
res1 = json.loads(json_str)
print(res1,type(res1)) # {'username':'jason','pwd':123} <class'dict'>
# 序列化:json.dumps()>>>将python数据类型转换成json格式字符串
# 反序列化:json.loads()>>>将json格式字符串转化成对应的数据类型
eg:
d = {'username': 'jason', 'pwd': 123}
# 将上述字典写入文件
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('jbk')) # 获取正确命令执行之后的结果
print('stderr',res.stderr.read().decode('jbk')) # 获取错误命令执行之后的结果
"""
该模块可以实现远程操作其他计算机的功能
动态获取命令执行并返回结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人