os,sys,json模块
os,sys,json模块
今日内容概要
-
os与sys模块
os模块主要与操作系统打交道 sys模块主要与python解释器打交道
-
json模块
今日内容详细
os模块(重要)
os模块主要与代码运行所在的操作系统打交道
import os
# 1.创建目录(文件夹)
# os.mkdir(r'd1') # 相对路径 在执行文件所在的路径下创建目录 可以创建单级目录
# os.mkdir(r'd2\d22\d222') # 不可以创建多级目录
# os.makedirs(r'd2\d22\d222') # 可以创建多级目录
# os.makedirs(r'd3') # 也可以创建多级目录
# 2.删除目录(文件夹)
# os.rmdir(r'd1') # 可以删除单级目录 只能删除空的单级目录
# os.rmdir(r'd2\d22\d222') # 不可以一次性删除多级目录
# os.removedirs(r'd2\d22') # 可以删除多级目录 只能删除空的多级目录
# 3.列举指定路径下内容名称
# print(os.listdir()) # ['.idea', 'os模块.py'] 列举当前目录下的内容名称
# print(os.listdir(r'D:\\')) # 列举绝对路径下的内容名称
# 4.删除/重命名文件
# os.rename(r'a.txt', r'aaa.txt') # 重命名
# os.remove(r'aaa.txt') # 删除
# 5.获取/切换当前工作目录
# print(os.getcwd()) # F:\APP\pycharm\pythonProject\day19os-sys-json模块
# os.chdir('..') # 切换到上一级目录
# print(os.getcwd()) # F:\APP\pycharm\pythonProject
# os.mkdir(r'hei') # 在返回上一级的基础上创建一个单级目录
# 6.动态获取项目根路径(重要)
# print(os.path.abspath(__file__)) # 获取执行文件所在的绝对路径 F:\APP\pycharm\pythonProject\day19os-sys-json模块\os模块.py
# print(os.path.dirname(__file__)) # 获取执行文件所在的目录路径 F:/APP/pycharm/pythonProject/day19os-sys-json模块
# 7.判断路径是否存在(文件,目录)
# print(os.path.exists(r'os模块.py')) # 判断文件路径是否存在 True
# print(os.path.exists(r'F:\APP\pycharm\pythonProject\day19os-sys-json模块')) # 判断目录是否存在 True
# print(os.path.isfile(r'os模块.py')) # 判断路径是否是文件 True
# print(os.path.isfile(r'F:\APP\pycharm\pythonProject\day19os-sys-json模块')) # 判断路径是否是文件 False
# print(os.path.isdir(r'os模块.py')) # 判断路径是否是目录 False
# print(os.path.isdir(r'F:\APP\pycharm\pythonProject\day19os-sys-json模块')) # 判断路径是否是目录 True
# 8.路径拼接(重要)
s1 = r'F:\APP\pycharm\pythonProject\day19os-sys-json模块'
s2 = r'os模块.py'
print(f'{s1}\{s2}') # 最好不要用 F:\APP\pycharm\pythonProject\day19os-sys-json模块\os模块.py
"""
涉及到路径拼接一定不要自己做 因为不同的操作系统路径分隔符不一样
"""
print(os.path.join(s1, s2)) # 用这个 兼容性高
# 9.获取文件大小(字节)
print(os.path.getsize(r'os模块.py')) # 2595 字节大小
sys模块
import sys
# print(sys.path) # 获取执行文件的sys.path
print(sys.getrecursionlimit()) # 获取python解释器默认最大递归深度
sys.setrecursionlimit(2000) # 修改python解释器默认最大递归深度
print(sys.version) # 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)]
print(sys.platform) # 平台信息 win32(了解即可)
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模块
json模块也称为序列号模块 序列化可以打破语言限制实现不同编程语言之间数据交互
json格式数据的作用
json格式数据的形式
字符串类型并且引号都是双引号
import json
d1 = {'name': 'jason', 'pwd': 123}
# print(d1, type(d1))
# res = json.dumps(d1)
# print(res, type(res))
with open('a.txt', 'w', encoding='utf8') as f:
# json_str = json.dumps(d1)
# f.write(json_str)
# 等价于
json.dump(d1, f)
with open('a.txt', 'r', encoding='utf8') as f1:
# json_str = f1.read()
# json_dict = json.loads(json_str)
# print(json_dict, type(json_dict))
res = json.load(f1)
print(res, type(res))
json相关操作
'''
针对数据
json.dumps()
json.loads()
针对文件
json.dump()
json.load()
json模块实战
# 用户登录注册功能
import os
import json
# 注册功能
# 1.获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__) # F:/APP/pycharm/pythonProject/day19os-sys-json模块
# 2.拼接出db目录
db_dir = os.path.join(base_dir, 'db')
# 3.创建db目录
if not os.path.isdir(db_dir):
os.mkdir(db_dir)
# 4.获取用户数据
while True:
username = input('请输入注册用户名(q\Q退出):').strip()
if username.upper() == 'Q':
break
password = input('请输入密码:').strip()
# 4.1判断用户名是否已经存在
# 5.构造用户字典
user_dict = {
'username': username,
'password': password,
'account': 999999,
'shop_car': [] # 购物车
}
# 6.拼接出存储用户数据的文件路径,此路径在db下
user_file = os.path.join(db_dir, f'{username}.json')
# 7.写入文件数据
with open(user_file, 'w', encoding='utf8') as f1:
json.dump(user_dict, f1)
# 登录
username1 = input('请输入登录用户名:').strip()
# 1.拼接上述用户名组成的文件路径
target_user_file = os.path.join(db_dir, f'{username1}.json')
# 2.判断拼接的用户名是否存在文件夹内
if not os.path.isfile(target_user_file):
print('用户名都不对 赶紧滚蛋')
else:
password1 = input('请输入密码:').strip()
# 3.获取用户真实数据字典
with open(target_user_file , 'r', encoding='utf8') as f2:
real_user_dict = json.load(f2)
if password1 == real_user_dict.get('password'):
print('登录成功')
else:
print('密码错误')