os模块(重要)
1.创建目录(文件夹)
"""os模块主要是跟操作系统打交道"""
mkdir(单级目录) makedirs(单级、多级目录)
# 使用import os
import os
os.mkdir(r'aaa')
# 使用相对路径,在当前执行文件所在的路径下创建一个aaa文件夹
os.mkdir(r'bbb\ccc')
# 发生报错, mkdir只能创建单级目录
import os
os.makedirs(r'bbb')
os.makedirs(r'aaa\bbb\ccc')
# makedirs可以创建单级目录, 也支持创建多级目录
2.删除目录(文件夹)
rmdir(删除单级目录(空)) removedirs(删除多级目录(空))
import os
os.rmdir(r'aaa') # 可以删除单级目录
os.rmdir(r'aaa\bbb\ccc') # 不可以一次性删除多级目录
os.rmdir(r'aaa') # 只能删空的单级目录
os.removedirs(r'aaa\bbb\ccc') # 可以删除多级目录
os.removedirs(r'aaa\bbb\ccc\ddd') # 只能删除空的多级目录
# 想要删除多级目录,也可以使用绝对路径
Copy path
os.removedirs(r'E:\线下作业\pythonProject\模块练习\aaa\bbb\ccc')
# 删除所选的目录之后,外层的目录如果也是空的那么会一直删
3.查看某个路径下的所有文件名称
listdir
import os
print(os.listdir()) # 获取文件名称
# ['.idea', 'aaa', 'os模块.py']
print(os.listdir(r'E:\线下作业\pythonProject'))
# ['模块练习']
4.删除文件、重命名文件
remove(删除文件) rename(重命名文件)
import os
os.remove(r'c.txt') # 删除文件
os.rename(r'qqq.txt',r'zzz.txt') # 重命名文件
5.获取/切换当前工作目录
getcwd
# 获取当前路径
import os
print(os.getcwd()) # E:\线下作业\pythonProject\模块练习
os.chdir('..') # 切换到上一级目录
print(os.getcwd()) # E:\线下作业\pythonProject
os.mkdir(r'qqq') # 创建文件夹qqq
6.动态获取项目根路径(重要***)
abspath dirname
import os
print(os.path.abspath(__file__))
# 获取执行文件的绝对路径
# E:\线下作业\pythonProject\模块练习\os模块.py
print(os.path.dirname(__file__))
# 获取执行文件所在的目录路径
# E:\线下作业\pythonProject\模块练习
7.判断路径是否存在(文件\目录)
exists(判断路径是否存在)
import os
# 判断所给的路径是否存在
print(os.path.exists(r'aaa')) # True
# 判断所给的路径是否存在
print(os.path.exists(r'os模块.py')) # True
isdir(是否是文件夹)
import os
# 判断是否是文件夹
print(os.path.isdir(r'qwe')) # True
# 判断是否是文件夹
print(os.path.isdir(r'os模块.py')) # False
isfile(是否是文件)
import os
# 判断是否是文件
print(os.path.isfile(r'qwe')) # Flase
# 判断是否是文件
print(os.path.isfile(r'os模块.py')) # True
8.路径拼接(重要***)
import os
base_dir = 'E:\线下作业\pythonProject\模块练习\qwe'
exe_dir = 'os模块.py'
# 拼接到py文件的路径
print(f'{base_dir}\{exe_dir}') # 路径分隔符在不同系统不一样,所以兼容性极差
"""
涉及到路径拼接一定不要自己做 因为不同的操作系统路径分隔符不一样
"""
print(os.path.join(base_dir,exe_dir)) # 能够自动识别当前操作系统的分隔符
9.获取文件大小(字节数,bytes)
import os
print(os.path.getsize(r'os模块.py'))
sys模块
"""主要是跟python解释器打交道"""
import sys
# 1.列举当前执行文件所在的sys.path
print(sys.path)
# 2.获取python解释器默认最大递归深度
print(sys.getrecursionlimit())
# 1000
# 3.修改python解释器默认最大递归深度
sys.setrecursionlimit(2000)
# 4.获取解释器版本信息
print(sys.version)
# 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)]
# 5.平台信息
print(sys.platform)
# win32
"""
cmd终端可以使用windows+r并输入cmd唤起
也可以在pycharm直接使用快捷方式Terminal
模拟cmd并自动切换到当前执行文件所在的路径下
"""
res = sys.argv
if len(res) != 3:
print('执行命令缺少了用户名或密码')
else:
username = res[1]
password = res[2]
if username == 'jason' and password == '123':
print('jason您好 文件正常执行')
else:
print('您不是jason无权执行该文件')
json模块
1.json格式数据是不同编程语言之间的数据交换的媒介
2.json格式数据的具体特征
"""
数据是基于网络传输肯定是二进制格式化
在Python中bytes类型的数据可以直接看成二进制数据
但是只有字符串可以转成bytes类型
"""
# 双引号是json格式数据独有的标志符号
import json
d = {'name':'moon','pwd':123}
print(d,type(d))
res = json.dumps(d)
print(res,type(res))
print(str(d),type(str(d)))
# 就算把数据类型转换成字符串,也还是单引号
3.json相关操作
针对数据
json.dumps() # 序列化
json.loads() # 反序列化
import json
d = {'name':'moon','pwd':123}
res = json.dumps(d) # dumps 序列化,将python数据类型转换成json格式字符串
print(res,type(res))
res1 = json.loads(res) # loads,反序列化将json格式字符串转换成对应的数据类型
print(res1,type(res1))
针对文件
json.dump()
json.load()
"""
如果json模块需要配合文件一起使用的话 有固定的方法
json.dump()
将其他数据类型直接写入文件(自动转json格式字符串)
json.load()
将文件数据直接转成对应的数据类型(自动反序列化)
"""
json模块实战
用户登录注册功能
import os
import json
# 注册功能
# 1.获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__) # E:\线下作业\pythonProject\模块练习
# 2.拼接出db目录的路径
db_dir = os.path.join(base_dir,'db') # E:\线下作业\pythonProject\模块练习\db
# 3.创建db目录
if not os.path.isdir(db_dir):
os.mkdir(db_dir)
# 4.获取用户数据
username = input('请输入用户名:').strip()
password = input('请输入密码:').strip()
# 4.1判断用户名是否已存在
user_file_path = os.path.join(db_dir,f'{username}.json')
# 5.构造字典
user_dict = {
'姓名':username,
'密码':password,
'account':1000,
'shop_car':[]
}
# 6.拼接存储用户数据的文件路径
user_file_path = os.path.join(db_dir,f'{username}.json')
# E:\线下作业\pythonProject\模块练习\db\qwd.json
# 7.写入文件数据
with open(user_file_path,'w',encoding='utf8')as f:
json.dump(user_dict,f)
username = input('请输入用户名:').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('请输入密码:').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('密码错误')