常用内置模块os sys json
今日内容回顾
- 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的更多相关文章
- 模块random+os+sys+json+subprocess
模块random+os+sys+json+subprocess 1. random 模块 (产生一个随机值) import random 1 # 随机小数 2 print(random.rando ...
- Python常用模块os & sys & shutil模块
OS模块 import os ''' os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录: ...
- 学到了林海峰,武沛齐讲的Day22-完 os sys json pickle shelve XML re
__ file__ ===== 文件路径 os.path.dirname( 路径 )=======到上一层目录 os sys
- 6 - 常用模块(os,sys,time&datetime,random,json&picle,shelve,hashlib)
导入模块 想使用 Python 源文件,只需在另一个源文件里执行 import 语句 import module1[, module2[,... moduleN] from语句让你从模块中导入一个指定 ...
- python之常见模块(time,datetime,random,os,sys,json,pickle)
目录 time 为什么要有time模块,time模块有什么用?(自己总结) 1. 记录某一项操作的时间 2. 让某一块代码逻辑延迟执行 时间的形式 时间戳形式 格式化时间 结构化时间 时间转化 总结: ...
- python - 常用模块 os, sys
常用模块: os(处理文件和目录), sys(sys 模块包含了与 Python 解释器和它的环境有关的函数.) sys.argv 变量是一个字符串的 列表.特别地,sys.argv 包含了 命令行参 ...
- Day 17 time,datetime,random,os,sys,json,pickle
time模块 1.作用:打印时间,需要时间的地方,暂停程序的功能 时间戳形式 time.time() # 1560129555.4663873(python中从1970年开始计算过去了多少秒) 格式化 ...
- 常用模块 time sys os json pickle
# import time # print(time.time()) #秒数 # print('开始下载') # time.sleep(2) # print('下载完成') # print(time. ...
- oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections
今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...
- 常用内置模块(一)——time、os、sys、random、shutil、pickle、json
常用内置模块 一.time模块 在python中,时间分为3种 1.时间戳: timestamp,从1970年1月1日到现在的秒数, 主要用于计算两个时间的差 2.localtime ...
随机推荐
- 「国产系统」Tubian 0.1,兼容Windows和Android的GNU/Linux系统!
Tubian 0.42已发布:https://www.cnblogs.com/tubentubentu/p/16745926.html Tubian是我的自用系统整理而成的Linux发行版,基于Deb ...
- Xorg+LXDE迁移到Xwayland(同时支持Waydroid和Wine)记录
系统环境: Debian bullseye Display Manager:无 桌面环境:LXDE Xorg 为什么使用Xwayland Wayland+Xwayland可以很好的支持Wayland ...
- Go设计模式学习准备——下载bilibili合集视频
需求 前段时间面试,被问到设计模式.说实话虽然了解面向对象.多态,但突然被问到设计模式,还要说清解决什么问题,自己是有些懵的,毕竟实习主要工作是在原项目基础进行CRUD,自己还是没有深度思考,所以只能 ...
- 2.CBV和类视图as_view源码解析
一.FBV和CBV # 视图基于函数开发 FBV: function.base.views # 视图基于类开发 CBV: class .base .views #Python是一个面向对象的编程语言, ...
- Python 嵌入式打包 (图文)
Python嵌入式打包过程 目录 Python嵌入式打包过程 下载嵌入式包 解压和配置 安装pip和其他依赖 启动项目 python嵌入式打包:将python环境与项目代码打包到同一个文件夹中,在其他 ...
- SoringCloud(四) - 微信获取用户信息
1.项目介绍 2.微信公众平台 和 微信开放文档 2.1 微信公众平台 2.1.1 网址链接 https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?ac ...
- java学习之spring基础
0x00前言 spring框架应用的是ioc模式,ioc模式是指控制反转模式,本质是你不去创建对象让spring框架给你创建对象你去使用对象.多种开发模式通过配置文件和注解的方式去开发的都很值得去学习 ...
- 【Azure API 管理】Azure APIM服务集成在内部虚拟网络后,在内部环境中打开APIM门户使用APIs中的TEST功能失败
问题描述 使用微软API管理服务(Azure API Management),简称APIM. 因为公司策略要求只能内部网络访问,所以启用了VNET集成.集成方式见: (在内部模式下使用 Azure A ...
- 第2-3-4章 上传附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss
目录 5.3 接口开发-上传附件 5.3.1 接口文档 5.3.2 代码实现 5.3.3 接口测试 5.3 接口开发-上传附件 第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令 第 ...
- 基于python的数学建模---logicstic回归
樱花数据集的Logistic回归 绘制散点图 import matplotlib.pyplot as plt import numpy as np from sklearn.datasets impo ...