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

2022.3.30重要模块的使用

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

一、os模块

主要是跟操作系统打交道

1、创建目录(文件夹)

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

2、删除目录(文件夹)

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

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

import os
print(os.listdir())  # 查看当前路径下所有文件名称
print(os.listdir(r'\users'))  # 查看users路径下所有文件名

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

import os
os.remove(r'a.txt')  # 删除a.txt文件
os.rename(r'a.txt',r'b.txt')  # 重命名文件

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

import os
print(os.getcwd())  # 获取当前所在路径
os.chdir(r'\users\aaa')  # 切换路径至...

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

import os
os.path.dirname(__file__)  # 动态获取当前执行文件所在的绝对路径
os.path.diename(os.path.dirname(__file__))  # 每嵌套一层就相当于往上切换一层

os.path.abspath(__file__)  # 动态获取当前执行文件自身的绝对路径

7、判断文件是否存在

import os
print(os.path.exsits(r'ATM'))  # True,表示该文件路径存在

print(os.path.isdir(r'ATM'))  # False,判断该路径是否是文件夹

print(os.path.isfile(r'ATM'))  # False,判断该路径是否是一个文件

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

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

9、获取文件大小

import os
print(os.path.getsize(r'ATM'))  # 128, 表示128bytes

二、sys模块

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

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

import sys
print(sys.path)  # 结果是个列表,类似于环境变量

2、获取解释器版本信息

import sys
print(sys.version)

3、获取平台信息

print(sys.paltform)

4、自定义命令行操作

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

print(sys.argv)

三、json模块

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

引入:

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

json格式数据的具体特征:

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

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

1、dumps()和loads()

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()

可以直接写入和读取文件

如果在将数据转化成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软件的功能)

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.结算购物车
  # 项目说明
  	用户数据采用json格式存储到文件目录db下 一个用户一个单独的文件
    	数据格式 {"name":"jason","pwd":123} 
      # ps:文件名可以直接用用户名便于校验
    用户注册时给每个用户添加两个默认的键值对(账户余额 购物车)
    	{"balance":15000,"shop_car":{}}
    添加购物车功能 商品列表可以自定义或者采用下列格式
    	good_list = [
        	['挂壁面',3],
        	['印度飞饼', 22],
            ['极品木瓜', 666], 
            ['土耳其土豆', 999],  
            ['伊拉克拌面', 1000],  
            ['董卓戏张飞公仔', 2000],  
            ['仿真玩偶', 10000] 
        ]
      用户可以反复添加商品,在购物车中记录数量
      		{'极品木瓜':[个数,单价]}
    结算购物车
    	获取用户购物车中所有的商品计算总价并结算即可
  # 思考:针对添加购物车和结算只有登录的用户才可以执行如何实现
posted @ 2022-03-30 21:32  马氵寿  阅读(124)  评论(0)    收藏  举报