今日内容回顾

  • 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. 关于docker创建容器报错-docker: Error response from daemon: runtime "io.containerd.runc.v2" binary not installed

    今天在对一台服务器(docker相关的业务服务器)进行OS补丁时,默认使用的 yum update -y 对所有的安装包进行了升级 升级完成后,让应用方检查确认应用及功能是否一切正常,如果不正常,严重 ...

  2. Sun 的 BASE64Encoder替代

    可以使用 org.apache.commons.codec.binary.Base64替代 Maven依赖如下 <dependency> <groupId>commons-co ...

  3. SQL基础语句入门

    SQL语句入门 起因 学校开设数据库相关的课程了,打算总结一篇关于基础SQL语句的文章. SQL介绍 SQL最早版本是由IBM开发的,一直发展到至今. SQL语言有如下几个部分: 数据定义语言DDL: ...

  4. HFS局域网分享文件的神器(附下载链接)

    温馨提示,下载链接在页末 前言 假如说你需要传递个学习资料给好基友,我们有许多种方式可选:硬盘媒介.网络分享等. 要是论速度,还是得拿3.0或以上的U盘来拷贝,确实神速哈哈.但是其也有局限性,比如需要 ...

  5. CQOI2015任务查询系统

    题目链接 主席树. 把区间的影响挂在左端点与右端点,建树时顺便对应的插入与删除. 维护一段值域区间的和与数字个数,查询时要注意与第k大的数相同的数可能有很多. 复杂度O(nlogn) #include ...

  6. [Thread] Synchronized

    1.Monitor对象 Monitor对象被称为管程或者监视器锁. 在Java中,每一个对象实例都会关联一个Monitor对象. 这个Monitor对象既可以与对象一起创建销毁,也可以在线程试图获取对 ...

  7. golang的内存管理

    0.1.索引 https://blog.waterflow.link/articles/1663406367769 1.内存管理 内存管理是管理计算机内存的过程,在主存和磁盘之间移动进程以提高系统的整 ...

  8. 知识图谱-生物信息学-医学顶刊论文(Bioinformatics-2021)-MUFFIN:用于DDI预测的多尺度特征融合

    2.(2021.3.15)Bioinformatics-MUFFIN:用于DDI预测的多尺度特征融合 论文标题: MUFFIN: multi-scale feature fusion for drug ...

  9. 类的编写模板之简单Java类

    简单Java类是初学java时的一个重要的类模型,一般由属性和getter.setter方法组成,该类不涉及复杂的逻辑运算,仅仅是作为数据的储存,同时该类一般都有明确的实物类型.如:定义一个雇员的类, ...

  10. 在 .NET 7上使用 WASM 和 WASI

    WebAssembly(WASM)和WebAssembly System Interface(WASI)为开发人员开辟了新的世界..NET 开发人员在 Blazor WebAssembly 发布时熟悉 ...