今日内容回顾

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

os模块

os模块主要与代码运行的操作系统打交道

1、创建目录(文件夹)

import os
os.mkdir(r'b') # 相对路径 在执行文件所在的路径创建目录
os.mkdir(r'b\bb\bbb')  # 无法创建多级目录
os.makedirs(r'b\bb\bbb')  # 可以创建多级目录
os.makedirs(r'b1') # 也可以创建单级目录

2、删除目录(文件夹)

os.rmdir(r'b1')  # 可以删除单级目录(只能删空的单级目录)
os.rmdir(r'a\aa\aaa') # 无法一次性删除多级目录 这里删的只是aaa
os.removedirs(r'a\aa')  # 可以一次性删除多级目录(但只能删空的多级目录) 也能删单级

3、列举指定路径下内容名称

# 可以指定查找路径下的内容名称
print(os.listdir()) # 显示的是依据当前执行文件所在位置下的内容名称
print(os.listdir(r'D:\\')) # 显示的是D盘根目录下的内容名称

4、删除\重命名文件

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

5、获取/切换当前工作目录

print(os.getcwd())  # 获取当前所在的工作目录 D:\py20\day19
os.chdir('..') # 切换到上一级目录
print(os.getcwd()) # D:\py20

6、动态获取项目根路径(重要)

print(os.path.abspath(__file__))  # 获取执行文件的绝对路径 D:\py20\day19\a.py

print(os.path.dirname(__file__))  # 获取执行文件所在的目录路径 D:/py20/day19

7、判断路径是否存在(文件、目录)

print(os.path.exists(r'yoyo.py'))  # 判断文件路径是否存在 True 同样依据执行文件所在位置判断在与不在
print(os,path.exists(r'D:\py20\day19')) # 判断任意目录是否存在 True print(os.path.isfile(r'D:\py20\day19\a.py')) # 判断路径下是否是是文件 True
print(os.path.isfile(r'a.py')) # True
print(os.path.isfile(r'yoyo.py')) # False
print(os.path.isfile(r'D:\py20\day19')) # False print(os.path.isdir(r'a.py')) # False 判断目录下是否存在文件
print(os.path.isdir(r'D:\py20\day19')) # True
print(os.path.isdir(r'D:\py20\day19\bin')) # True

8、路径拼接(重要)

a1 = r'D:\py20\day19'
a2 = r'a.py'
错误做法:print(f'{a1}\{a2}')
涉及到路径拼接一定不要自己拼接 因为不同的操作系统路径分隔符不一样
print(os.path.join(a1, a2)) # D:\py20\day19\a.py 使用模块拼接的话会自动转不同的操作系统路径的分隔符

9、获取文件大小(字节)

print(os.path.getsize(r'a.py'))  # 785字节 是以字节为单位

sys模块

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

import sys

print(sys.path)  # 获取执行文件的sys.path
print(sys.getrecursionlimit()) # 获取python解释器默认最大递归深度
sys.setrecursionlimit(3000) # 修改python解释器默认最大递归深度
print(sys.version) # 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)] # 获取解释器的版本
# print(sys.platform) # 平台信息 win32(了解即可) # 下列是用在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模块

​ 何为jason模块

# jason模块也称序列化模块 序列化可以打破语言的限制实现不同编程语言之间数据交互
jason格式数据的作用 json格式数据的形式
特殊的字符串类型并且引号都是双引号 d = {'name': 'jason', 'age': 18, 'hobby': 'read'}
print(d, type(d)) # {'name': 'jason', 'age': 18, 'hobby': 'read'} <class 'dict'> import json
res = json.dumps(d)
print(res, type(res)) # {"name": "jason", "age": 18, "hobby": "read"} <class 'str'> json相关操作
# 针对数据
json.dumps() 序列化:将某一数据类型转化成json格式字符串
json.loads() 反序列化:json格式字符串转化成某一个编程语言对应的数据类型 # 针对文件
json.dump() 将某一数据类型转化成json格式字符串写入文件 必须要有一个文件对象
json.load() 读取文件中json格式数据并反序列化成数据类型

json.dumps() 序列化
json.loads() 反序列化
user_dic = {'name': 'jason', 'hobby': 'read'}
'将字典写入文件并且取出来之后还是字典'
with open(r'b.txt', 'w', encoding='utf8') as f:
# json_str = json.dumps(user_dic) # 序列化:数据类型转化成json格式字符串
# f.write(json_info)
json.dump(user_dic, f) # 将数据序列化并写入文件:就是将字典转化成json字符串写入到文件里面去
with open(r'b.txt', 'r', encoding='utf8') as f1:
# json_data = f1.read()
# json_dict = json.loads(json_data) # 反序列化:json格式字符串转化成某一个编程语言对应的数据类型
# print(json_dict, type(json_dict))
res = json.load(f1) # 自动读取文件中json格式数据并反序列化成数据类型
print(res, type(res))

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'] 方式1
# user_file_path = os.path.join(db_dir, f'{username}.json') 方式2
# 5.构造用户字典
# user_dict = {
# 'username': username,
# 'password': password,
# 'account': 15000, # 账户余额
# 'shop_car': [] # 购物车
# }
# 6.拼接存储用户数据的文件路径
# user_file_path = os.path.join(db_dir, f'{username}.json') # D:/pythonProject03/day19/db/jason.json
# 7.写入文件数据
# with open(user_file_path,'w',encoding='utf8') as f:
# json.dump(user_dict, f)
username = 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('密码错误')

常用内置模块os sys json的更多相关文章

  1. 模块random+os+sys+json+subprocess

    模块random+os+sys+json+subprocess 1. random 模块   (产生一个随机值) import random 1 # 随机小数 2 print(random.rando ...

  2. Python常用模块os & sys & shutil模块

    OS模块 import os ''' os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录: ...

  3. 学到了林海峰,武沛齐讲的Day22-完 os sys json pickle shelve XML re

    __ file__    =====   文件路径 os.path.dirname( 路径 )=======到上一层目录 os sys

  4. 6 - 常用模块(os,sys,time&datetime,random,json&picle,shelve,hashlib)

    导入模块 想使用 Python 源文件,只需在另一个源文件里执行 import 语句 import module1[, module2[,... moduleN] from语句让你从模块中导入一个指定 ...

  5. python之常见模块(time,datetime,random,os,sys,json,pickle)

    目录 time 为什么要有time模块,time模块有什么用?(自己总结) 1. 记录某一项操作的时间 2. 让某一块代码逻辑延迟执行 时间的形式 时间戳形式 格式化时间 结构化时间 时间转化 总结: ...

  6. python - 常用模块 os, sys

    常用模块: os(处理文件和目录), sys(sys 模块包含了与 Python 解释器和它的环境有关的函数.) sys.argv 变量是一个字符串的 列表.特别地,sys.argv 包含了 命令行参 ...

  7. Day 17 time,datetime,random,os,sys,json,pickle

    time模块 1.作用:打印时间,需要时间的地方,暂停程序的功能 时间戳形式 time.time() # 1560129555.4663873(python中从1970年开始计算过去了多少秒) 格式化 ...

  8. 常用模块 time sys os json pickle

    # import time # print(time.time()) #秒数 # print('开始下载') # time.sleep(2) # print('下载完成') # print(time. ...

  9. oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections

    今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...

  10. 常用内置模块(一)——time、os、sys、random、shutil、pickle、json

    常用内置模块 一.time模块 在python中,时间分为3种       1.时间戳: timestamp,从1970年1月1日到现在的秒数, 主要用于计算两个时间的差    2.localtime ...

随机推荐

  1. 3_肯德基餐厅信息查询_动态加载_post请求

    肯德基餐厅信息查询网址:http://www.kfc.com.cn/kfccda/storelist/index.aspx import requests url = 'http://www.kfc. ...

  2. SQL的事务

    一.基本概念 事务是数据库区别于文件系统的重要特性之一,当有了事务,就可以让数据库始终保持一致性,同时可以通过事务的机制恢复到某个时间点,保证了提交到数据库的修改不会因为系统崩溃而丢失: 事务只是一个 ...

  3. 提高工作效率的神器:基于前端表格实现Chrome Excel扩展插件

    Chrome插件,官方名称extensions(扩展程序):为了方便理解,以下都称为插件. 我们开发的插件需要在浏览器里面运行,打开浏览器,通过右上角的三个点(自定义及控制)-更多工具-拓展程序-打开 ...

  4. echarts的使用 超好用的报表制作、数据的图形化展示

    地址链接:https://echarts.apache.org/zh/index.html 1.图形选择 2.对应的js代码

  5. 齐博x1前台后台地址跳转的处理

    系统有三个入口,分别是 admin.php index.php member.php 所以就不能简单的使用TP默认的 url() 函数 而插件跟频道模块又有所不同,下面先讲解最基本的频道模块当中如何使 ...

  6. rabbitmq原理和应用

    0.1.索引 https://blog.waterflow.link/articles/1663772504649 RabbitMQ 是一个轻量级且易于部署的消息队列.它支持开箱即用的多种消息传递协议 ...

  7. HTML元素大全(1)

    01.基础元素 <h1/2/3/4/5/6>标题 从大h1到小h6,块元素,有6级标题.是一种标题类语义标签,内置了字体.边距样式. 合理使用h标签,主要用于标题,不要为了加粗效果而随意使 ...

  8. Dapr实现.Net Grpc服务之间的发布和订阅,并采用WebApi类似的事件订阅方式

    大家好,我是失业在家,正在找工作的博主Jerry,找工作之余,总结和整理以前的项目经验,动手写了个洋葱架构(整洁架构)示例解决方案 OnionArch.其目的是为了更好的实现基于DDD(领域驱动分析) ...

  9. DelCrLfSpace V0.9

    开发界面 Option Explicit 'SourceTextBox 是上面的源框 'ResultTextBox 是下面的处理预览框 'Form KeyPreview = True Private ...

  10. Nginx 使用自签名证书实现 https 反代 Spring Boot 中碰到的页面跳转问题

    问题一:页面自动跳转到 80 端口 问题描述 最近在使用Nginx反代一个Spring Boot项目中碰到了一个问题,使用 Spring Boot 中的 redirect: 进行页面跳转的时候,通过 ...