模块篇:os、sys、json、subprocess模块

2022.3.30重要模块的使用

  • os模块
  • sys模块
  • json模块
  • subprocess模块

一、os模块

主要是跟操作系统打交道

1、创建目录(文件夹)

复制代码
  • 1
  • 2
  • 3
  • 4
import os os.mkdir(r'aaa') # 在当前执行文件路径创建一个aaa文件夹,只能创建单极目录 os.makedirs(r'aaa') # makedirs也可创建单极目录 os.makedirs(r'aaa/bbb/ccc') # makedirs也可创建多级目录

2、删除目录(文件夹)

复制代码
  • 1
  • 2
  • 3
import os os.rmdir(r'aaa') # 能且只能删除空的单极目录 os.removedirs(r'aaa') # 可以删除单极目录,且如果删除目录之后最外层的目录也是空的则继续删除

3、查看某路径下所有文件名称(文件、文件夹)

复制代码
  • 1
  • 2
  • 3
import os print(os.listdir()) # 查看当前路径下所有文件名称 print(os.listdir(r'\users')) # 查看users路径下所有文件名

4、删除文件、重命名文件

复制代码
  • 1
  • 2
  • 3
import os os.remove(r'a.txt') # 删除a.txt文件 os.rename(r'a.txt',r'b.txt') # 重命名文件

5、获取当前路径、切换路径

复制代码
  • 1
  • 2
  • 3
import os print(os.getcwd()) # 获取当前所在路径 os.chdir(r'\users\aaa') # 切换路径至...

6、软件开发目录规范,启动脚本兼容性操作

复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
import os os.path.dirname(__file__) # 动态获取当前执行文件所在的绝对路径 os.path.diename(os.path.dirname(__file__)) # 每嵌套一层就相当于往上切换一层 os.path.abspath(__file__) # 动态获取当前执行文件自身的绝对路径

7、判断文件是否存在

复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
import os print(os.path.exsits(r'ATM')) # True,表示该文件路径存在 print(os.path.isdir(r'ATM')) # False,判断该路径是否是文件夹 print(os.path.isfile(r'ATM')) # False,判断该路径是否是一个文件

8、拼接路径(极容易忽略)

复制代码
  • 1
  • 2
  • 3
  • 4
import os base_dir = 'ATM' exe_dir = '01 作业讲解.py' res = os.path.join(base_dir,exe_dir) # 将两个路径拼接起来方便使用,且这种方法能自动兼容不同操作系统的分隔符\

9、获取文件大小

复制代码
  • 1
  • 2
import os print(os.path.getsize(r'ATM')) # 128, 表示128bytes

二、sys模块

该模块主要是与python解释器打交道

1、列举当前执行文件所在的sys.path(掌握)

复制代码
  • 1
  • 2
import sys print(sys.path) # 结果是个列表,类似于环境变量

2、获取解释器版本信息

复制代码
  • 1
  • 2
import sys print(sys.version)

3、获取平台信息

复制代码
  • 1
print(sys.paltform)

4、自定义命令行操作

cmd终端可以使用windows+r并输入cmd唤起,也可以在pycharm中使用快捷方式Terminal(alt+f12),进行模拟cmd并自动切换到当前执行文件所在的路径下

复制代码
  • 1
print(sys.argv)

三、json模块

json是一个序列化模块,主要用于跨语言传输数据,就像人与计算机不能直接交流,而需要一个翻译解释器才可以进行沟通,json模块就是一个用来帮助不同语言进行交互的一个工具

引入:

数据基于网络传输肯定是二进制格式,在python中bytes类型的数据可以堪称二进制数据,而且python中只有字符串类型可以转成bytes类型(encode()),因此json模块的数据类型也基于此

json格式数据的具体特征:

(1)json格式数据,本质应该属于字符串类型

(2)双引号是json格式数据独有的标志符号

1、dumps()和loads()

复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
import json d = {'username':'jason','pwd':123} res = json.dumps(d) # 将字典转成json格式 print(res,type(res)) # {"username": "jason", "pwd": 123} <class 'str'>, 数据都加上了双引号,这是json格式的标志,本质是字符串 res1 = json.loads(res) # 将json格式再转成字典 print(res1,type(res1)) # {'username': 'jason', 'pwd': 123} <class 'dict'>

因此,可以发现使用json格式进行相互转化,不会改变数据原有的数据类型,便于我们进行操作

总结:

json.dumps() 又叫序列化
将python数据类型转换成json格式字符串
json.loads() 又叫反序列化
将json格式字符串转换成对应的数据类型

2、dump()和load()

可以直接写入和读取文件

复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
如果在将数据转化成json格式并写入文件,可以直接使用下面的形式: d = {'username': 'jason', 'pwd': 123} with open(r'a.txt','w',encoding='utf8') as f: json.dump(d, f) # 表示直接将d转化成json格式并写入文件f 读取文件也是一样可以直接使用json模块读取json类型数据的文件 with open(r'a.txt','r',encoding='utf8') as f: data = json.load(f)

注意:不是所有数据类型都支持序列化,支持的类型如下

python数据类型 json对应
dict object
list,tuple array
str string
int,float number
True true
False false
None null

四、subprocess模块

该模块可以实现远程操作其他计算机的功能,动态获取命令执行并返回结果(类似于Xshell软件的功能)

复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
import subprocess # ls在终端就是查看当前路径所有文件名的命令(mac电脑) 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')) # 获取错误命令执行之后的结果

作业

复制代码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
编程题 # 项目功能 1.用户注册 2.用户登录 3.添加购物车 4.结算购物车 # 项目说明 用户数据采用json格式存储到文件目录db下 一个用户一个单独的文件 数据格式 {"name":"jason","pwd":123} # ps:文件名可以直接用用户名便于校验 用户注册时给每个用户添加两个默认的键值对(账户余额 购物车) {"balance":15000,"shop_car":{}} 添加购物车功能 商品列表可以自定义或者采用下列格式 good_list = [ ['挂壁面',3], ['印度飞饼', 22], ['极品木瓜', 666], ['土耳其土豆', 999], ['伊拉克拌面', 1000], ['董卓戏张飞公仔', 2000], ['仿真玩偶', 10000] ] 用户可以反复添加商品,在购物车中记录数量 {'极品木瓜':[个数,单价]} 结算购物车 获取用户购物车中所有的商品计算总价并结算即可 # 思考:针对添加购物车和结算只有登录的用户才可以执行如何实现
posted @   马氵寿  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开