模块
os模块(重要)
os模块是python中这里文件和目录最常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。
-
创建文件夹
os.mkdir():创建一个新的文件夹(目录)
os.makedirs():创建多个目录(文件夹)
-
删除目录(文件夹)
os.rmdir(r'd1')删除单个文件夹(目录)
os.removedirs(r'd2\d3')可以删除多级目录,但是有内容的目录不会删除
-
列举指定路径下内容名称
print(os.listdir())
-
删除/重命名文件
os.rename(r'a.txt', r'aaa.txt')重命名
os.remove(r'aaa.txt')删除文件
-
获取/切换当前工作目录
print(os.getcwd())
os.chdir('..')
-
动态获取项目根路径
print(os.path.abspath(__ file __))执行文件的绝对路径
print(os.path.dirname(__ file__))
-
判断路径是否存在(文件、目录)
print(os.path.exists(r'01.py'))
print(os.path.exists(r'D:\pythonATM_0325'))
print(os.path.isfile(r'01.py'))
print(os.path.isdir(r'01py'))
-
路径拼接
s1 = r'D:\pythonATM_0325'
s2 = 'r01.py'
print(os.path.join(s1, s2))
-
获取文件大小(字节)
print(os.path.getsize(r'02.py'))
sys模块
import sys
print(sys.path) # 获取执行文件的sys.path
print(sys.getrecursionlimit()) # 获取python解释器默认最大递归深度
sys.setrecursionlimit(2000) # 修改python解释器默认最大递归深度
print(sys.version) # 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:47:24) [MSC v.1927 64 bit(AMD64)]
print(sys.platform) # 平台信息 win32
res = sys.argv
if len(res) != 3:
print('执行命令缺少了用户名或密码')
else:
username = res[1]
password = res[2]
if suername == 'jason'and password == '123':
print('jason您好 文件正常执行')
else:
print('您不是jason无权执行该文件')
json模块
dumps: 将对象转化为json字符串
loads: 将json字符串转化为对象
import json
# 前端传递的json字符串转化为Python中的字段
s = '{"user":"admin","password":123}'
s1 = json.loads(s)
print(s1,type(s1)) # 输出:{'user': 'admin', 'password': 123} <class 'dict'>
# 后端传递Python字典,转化为json字符串
d = {'user':'admin','password':123,'name':'蟒蛇'}
s3 = json.dumps(d,ensure_ascii=False) # 使用ensure_ascii = False 防止中文转化为ascii码
print(s3 ,type(s3)) # 输出:{"user": "admin", "password": 123, "name": "蟒蛇"} <class 'str'>
s4 = json.dumps(d) # 使用ensure_ascii = False 防止中文转化为ascii码
print(s4) # 中文转化为ASCII码:{"user": "admin", "password": 123, "name": "\u87d2\u86c7"}
# 前端JSON和python的字典有什么区别
d = {'isLogin':True, 'QQ':False,'tel':None}
j = json.dumps(d)
print(j)
# 输出:{"isLogin": true, "QQ": false, "tel": null} ,可以看到Python的True,false,None,在Javascript中对应:true,false,null
# 列表也能进行json转化
l = [True,False,None,'泽塔']
j = json.dumps(l,ensure_ascii=False)
print(j) # [true, false, null, "泽塔"]
# 文件操作的dump和load
d = {'节日':'建军节','年龄':18}
json.dump(d,open('202298.txt',mode='w',encoding='utf-8'),ensure_ascii=False)
s = json.load(open('202298.txt',mode='r',encoding='utf-8'))
print(s) # {'节日': '建军节', '年龄': 18}
json模块实战
用户登录注册功能
import os
import json
# 注册功能
# 1.获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__) # D:/pythonProject03/day19
# 2.拼接出db目录的路径
db_dir = os.path.join(base_dir, 'db') # D:/pythonProject03/day19/db
# 3.创建db目录
if not os.path.isdir(db_dir):
os.mkdir(db_dir)
# 4.获取用户数据
username = input('username>>>:').strip()
password = input('password>>>:').strip()
# 4.1判断用户名是否已存在
print(os.listdir(db_dir)) # ['jason.json', 'kevin.json', 'tony.json']
# 5.构造用户字典
suer_dict = {
'username': username,
'password': password,
'account' : 15000, # 账户余额
'shop_car': [] # 购物车
}
# 6.拼接存储用户数据的文件路径
user_file_path = os.path.join(db_dir, f'{suername}.json') # D:/pythonproject03/day19/db/jason.json
# 7.写入文件数据
with open(suer_file_path,'w',encoding='utf8') as f: # json.dump(user_dict, f)
suername = input('username>>>:').strip()
# 1.拼接上述用户名组成的文件路径
target_user_file_path = os.path.join(db_dir, f'{username}.json')
if not os.path.isfile(target_user_file_path):
print('你赶紧滚蛋 用户名都不对 搞什么飞机')
else:
password = input('password>>>:').strip()
# 2.获取用户真实数据字典
with
open(target_user_file_path,'r',encoding='utf8') as f:
real_user_dict = json.load(f)
if password == real_user_dict.get('password'):
print('登陆成功')
else:
print('密码错误')