Python基础之模块:3、os模块 sys模块 json模块 json实战
一、os模块
引言:
OS模块是python中最为常用的模块,主要用处理文件和目录
1、创建目录
关键词:mkdir
作用:基于执行文件目录下创建文件夹,只能创建单级目录
代码用法:
导入模块:
import os
代码用法:
os.mkdir(r'bin')
关键词:makedirs
作用:基于执行文件目录下创建文件夹,可以创建单级目录和多级目录
代码用法:
导入模块:
import os
代码用法:
os.makedirs(r'aaa\bbb\ccc')
2、删除目录
关键词:rmdir
作用:基于执行文件目录下删除删除文件,只能删除单级目录,且目录必须为空
代码用法:
导入模块:
import os
代码用法:
os.rmdir(r'bin')
关键词:removedirs
作用:基于执行文件目录下删除删除文件,可以删除单级和多级目录,且目录必须为空
代码用法:
导入模块:
import os
代码用法:
os.removedirs(r'aaa\bbb\ccc')
3、查看指定路径下目录内容
关键词:listdir
作用:传入一个路径可查看该路径下文件和文件夹组成的列表,默认查看执行文件目录
代码用法:
导入模块:
import os
代码用法:
print(os.listdir()) # 默认查看执行文件目录下内容
print(os.listdir(r'C:\\')) # 查看指定路径下目录内容
4、删除/重命名文件
关键词:rename
作用:传入两个参数,第一个参数填入需要重命名的文件路径,第二个参数填入需要修改的名称。
支持修改文件和文件夹类型,修改文件时需要填入文件后缀名
代码用法:
导入模块:
import os
代码用法:
os.rename(r'www.py', 'eee.py') # 修改文件类型
os.rename(r'aaa', 'bbb') # 修改文件夹类型
关键词:remove
作用:参数内传入需要删除文件的路径(支持一次性删除多个文件,逗号隔开),只能删除文件,且需要输入文件后缀名,不支持删除文件夹
代码用法:
导入模块:
import
代码用法:
os.remove(r'aaa.py') # 删除单位文件
os.remove(r'aaa.py', r'bbb.py', r'ccc.py') # 删除多个文件
5、获取/切换当前目录
关键词:getcwd
作用:可获取执行文件所在的目录
代码用法:
导入模块:
import os
代码用法:
print(os.getcwd) # D:/pytcharm项目文件路径/38/os模块/os
关键词:chdir
作用:切换执行文件所在的目录
代码用法:
导入模块:
import os
代码用法:
os. chdir(r'..') # # D:/pytcharm项目文件路径/38/os模块
6、动态获取项目根路径
关键词:abspath
作用:获取当前执行文件的绝对路径,须在参数内填入__ file __
代码用法:
导入模块:
import os
代码用法:
print(os.path.abspath(__file__)) # D:\pytcharm项目文件路径\38\os模块\os\aaa.py
关键词:dirname
作用:获取当前执行文件所在路径,需在参数内填入__ file __
代码用法:
导入模块:
import os
代码用法:
os.path.dirname(__file__)
7、拼接/切割路径
关键词:jion
作用:可拼接参数内填入的路径
代码用法:
导入模块:
import os
代码用法:
path_dir = os.path.dirname(__file__) # 获取相对路径
path_dir_1 = 'aaa.py' # 定义文件名
path_dir_2 = os.path.join(path_dir,path_dir_1) # 拼接成绝对路径
print(os.path.isfile(path_dir_2)) # 成功拼接
8、判断文件、目录是否存在
关键词:exists作用:判断文件或文件夹是否存在,返回True,反之False使用方法:print(os.pach.exists('文件夹路径'))
关键词:isdir作用:判断是否是文件夹,返回True,反之False使用方法:print(os.pach.isdir('文件夹路径'))
关键词:isfile作用:判断是否是文件,返回True,反之False使用方法:print(os.pach.isfile('文件夹路径'))
9、判断文件大小
关键词:getsize作用:获取文件大小,以betys方式判断,可手动转换为其他单位使用方法:print(os.pach.getsize('文件夹路径'))
10、获取当前操作系统路径分隔符
关键词:sep作用:获取当前操作系统路径分隔符使用方法:os.path.sep

二、sys模块
引言:
sys模块是与python解释器交互的一个接口。sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。
1、path
作用:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
代码用法:
导入模块:
import sys
代码用法:
print(os.path)
----------------------------------------------------------------------------
['D:\\pytcharm项目文件路径\\38\\os模块\\os',
'D:\\pytcharm项目文件路径\\38\\os模块',
'D:\\PyCharm 2021\\plugins\\python\\helpers\\pycharm_display',
'D:\\python\\Python38\\python38.zip',
'D:\\python\\Python38\\DLLs',
'D:\\python\\Python38\\lib',
'D:\\python\\Python38',
'D:\\python\\Python38\\lib\\site-packages',
'D:\\PyCharm 2021\\plugins\\python\\helpers\\pycharm_matplotlib_backend']
2、getrecursionlimit
作用:获取python解释器最大递归深度,可通过setrecursionlimit()修改最大递归深度,在后方参数内修改
代码用法:
导入模块:
import sys
代码用法:
print(sys.getrecursionlimit()) # 1000
sys.setrecursionlimit(99999)
print(sys.getrecursionlimit()) # 99999
3、version
作用:可用来获取当前pycharm解释器版本
代码用法:
导入模块:
import sys
代码用法:
print(sys.version) # 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)]
4、argv
作用:实现从程序外部向程序传递参数。
代码用法:
导入模块:
import vrgv
代码用法:
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模块也称为序列化模块 序列化可以打破语言限制实现不同编程语言之间数据交互
语法法则:
1.名称必须是用双引号(“”)来引住
2.值可以是双引号包括的字符串、数字、true、false、null、JavaScript数组,或子对象
3.数据在key/value中
4.数据键用逗号分隔
5.大括号保存对象
6.中括号保存数组
1、针对数据
关键词:dumps
作用:可将python数据转换成json格式
代码用法:
导入模块:
import json
代码用法:
data_dict = {'name' : 'kangkang', 'hobby' : 'reading', 'age': 18}
print(json.dumps(data_dicr)) # {"name": "kangkang", "hobby": "reading", "age": 18}
关键词:loads
作用:可将预编译的dumps转换成面向python的数据
代码用法:
导入模块:
import json
代码用法:
user_data = {'name' : 'kangkang', 'hobby' : 'reading', 'age': 18}
json_dict = json.dumps(user_data)
print(json.loads(json_dict)) # {'name': 'kangkang', 'hobby': 'reading', 'age': 18}
2、针对文件
关键词:dump
作用:可将python的内置类型数据转换成json格式写入文本
代码用法:
导入模块:
import json
代码用法:
user_data = {'name': 'kangkang', 'hobby': 'reading', 'age': 18}
with open(r'a.txt', 'w', encoding='utf8') as f:
json.dump(user_data, f)
关键词:dump
作用:可将文本内json格式的数据转换成python内置类型数据格式
代码用法:
导入模块:
import json
代码用法:
user_data = {'name': 'kangkang', 'hobby': 'reading', 'age': 18}
with open(r'a.txt', 'r', encoding='utf8') as f:
print(json.load(f))
--------------------------------------------------------------------------------------
{'name': 'kangkang', 'hobby': 'reading', 'age': 18}
四、json模块实战
1、用户登录功能注册
1.注册功能:
import os
import sys
import json
# 获取执行文目录
user_dir = os.path.dirname(__file__)
# 获取操作系统路径分隔符
sb = os.path.sep
# 拼接db文件目录,存放用户登录数据
user_db = os.path.join(user_dir, '..' + sb + 'db')
# 创建db目录(判断db目录是否存在)
if not os.path.isdir(user_db):
os.makedirs(user_db)
def login():
while True:
# 获取用户信息
user_name = input('请创建您的用户名>>>:').strip()
user_paw = input('请设置您的登录密码>>>:').strip()
# 判断用户名是否存在
if '.json'.join([user_name, '']) not in os.listdir(user_db):
# 创建用于存储用户数据的文件的目录
user_name_db = os.path.join(user_db, f'{user_name}.json')
# 在文件内生成用户默认配置
user_dict = {
'user_name': user_name,
'user_paw': user_paw,
'user_money': 99999999999999999,
'user_shop': []
}
# 将用户数据写
with open(user_name_db, 'w', encoding='utf8') as f:
json.dump(user_dict, f)
break
else:
print('用户名已存在,请重新输入')
if __name__ == '__main__':
login()
2.登录功能
import os
import json
# 获取操作文件路径系统分隔符
sb = os.path.sep
# 拼接db文件路径,用于后期验证用户输入
dir_1 = os.path.join(os.path.dirname(__file__), '..' + sb + 'db')
def register():
# 登录次数计数装置
count = 2
# 登录条件判断
while count >= 0:
# 获取用户输入
user_name = input('请输入您的用户名>>>:').strip()
user_paw = input('请输入您的密码>>>:').strip()
# 拼接用户名,用于比对用户是否存在
user_name = user_name + '.json'
# 比对用户是否存在
if user_name in os.listdir(dir_1):
# 拼接用户信息绝对路径
abs_name_dir = os.path.join(dir_1, user_name)
# 打开存放用户信息的文本
with open(abs_name_dir, 'r', encoding='utf8') as f:
# 以json格式将用户信息导出
user_name_dict = json.load(f)
# 验证用户密码
if user_paw == user_name_dict.get('user_paw'):
print('登录成功')
break
else:
print('密码错误')
else:
print(f'用户名或密码错误,剩余{count}次机会')
# 设置登录次数限制
count -= 1
if __name__ == '__main__':
register()
3.启动文件
- 装饰器暂时用不到
from core import login
from core import register
def outer(func):
def inner(*args, **kwargs):
res = func(*args, **kwargs)
return res
return inner
dict_ = {'1': login.login, '2': register.register}
while True:
print('''
--------------------------
1.注册
2.登录
------------end-----------
''')
choice = input('请输入想要执行的编号(Q退出)>>>:').strip().lower()
print(choice)
if choice == 'Q':
break
if choice in dict_:
dict_.get(choice)()
else:
print('您的输入有误,请重新输入')
Python基础之模块:3、os模块 sys模块 json模块 json实战的更多相关文章
- python基础(十三)--os和sys模块
os模块 os.getpwd():获取当前工作目录(windows下没有) os.listdir(path):列出目录下的文件 os.remove(path):删出文件 (不能是目录,即文件夹) os ...
- Python内置的操作系统模块(os)与解释器交互模块(sys)
Python内置的操作系统模块(os)与解释器交互模块(sys) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本片博客只介绍Python调用操作系统的模块即os模块,以及Pyth ...
- python 正则,os,sys,hashlib模块
简单的小算法 random随机获取数据 import random def getrandata(num): a=[] i= while i<num: a.append(random.randi ...
- [xml模块、hashlib模块、subprocess模块、os与sys模块、configparser模块]
[xml模块.hashlib模块.subprocess模块.os与sys模块.configparser模块] xml模块 XML:全称 可扩展标记语言,为了能够在不同的平台间继续数据的交换,使交换的数 ...
- Py修行路 python基础 (二十)模块 time模块,random模块,hashlib模块,OS及sys模块
一.前提介绍: 可以开辟作用域的只有类,函数,和模块 for循环 if,else: 不能开辟自己的作用域 避免程序复用和重复调用,将这些写到一个.py文件中,做成一个模块,进行调 ...
- Day5- Python基础5 模块导入、time、datetime、random、os、sys、hashlib、json&pickle
本节目录: 1.模块的分类 2.模块的导入 3.time模块 4.datetime模块 5.random 6.os模块 7.sys模块 8.hashlib 9.json&pickle 一.模块 ...
- python常用模块---collections、time、random、os、sys、序列号模块
collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...
- python标准模块(os及sys模块)
一.os模块 用于提供系统级别的操作 os.getcwd() 获取当前工作目录 os.stat('path/filename') 获取文件/目录信息,其中包括文件大小等 os.sep 获得操作系统特定 ...
- python 常用模块之os、sys、shutil
目录: 1.os 2.sys 3.shutil 一.os模块 说明:os模块是对操作系统进行调用的接口 os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径 os.chdi ...
- Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)
一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应 ...
随机推荐
- Android OOM 问题探究 -- 从入门到放弃
一.前言 最近客户反馈了一些OOM的问题,很早之前自己也有简单了解过OOM的知识,但时间久远,很多东西都记不清了. 现在遇到这个OOM问题,也即趁此搜索了一些资料,对OOM问题做一些探究,把资料记录于 ...
- Vue3 Transition 过渡效果之切换路由组件
复习作用域插槽 组件可以被插入些许节点作为其子节点,插槽<slot>就是一个接口(或桥梁)引导这些节点进入组件.这些节点应该被渲染到组件里的具体哪个位置,就是具名插槽的作用.就像是给手机冲 ...
- 如何使用CSS伪类选择器
总览 CSS选择器允许你通过类型.属性.位于HTML文档中的位置来选择元素.本教程阐述了三个新选项:is().:where()和:has(). 选择器通常在样式表中使用.下面的示例会找到所有<p ...
- KingbaseES R3集群在线删除数据节点案例
案例说明: kingbaseES R3集群一主多从的架构,一般有两个节点是集群的管理节点,所有的节点都可以为数据节点:对于非管理节点的数据节点可以在线删除:但是对于管理节点,无法在线删除,如果删除管理 ...
- [深度学习]-Dataset数据集加载
加载数据集dataloader from torch.utils.data import DataLoader form 自己写的dataset import Dataset train_set = ...
- .NET Core Web APi类库如何内嵌运行?
话题 我们知道在.NET Framework中可以嵌入运行Web APi,那么在.NET Core(.NET 6+称之为.NET)中如何内嵌运行Web Api呢,在实际项目中这种场景非常常见,那么我们 ...
- Pod原理
Pod 是 Kubernetes 集群中最基本的调度单元,我们平时在集群中部署的应用都是以 Pod 为单位的,而并不是我们熟知的容器,这样设计的目的是什么呢?为何不直接使用容器呢? 为什么需要 Pod ...
- Systemd 进程管理教程
systemd 介绍 systemd是目前Linux系统上主要的系统守护进程管理工具,由于init一方面对于进程的管理是串行化的,容易出现阻塞情况,另一方面init也仅仅是执行启动脚本,并不能对服务本 ...
- redis cluster 6.2集群
redis最新版本:redis-6.2.1.tar.gz 安装的版本是redis-6.0.3 采用的主机: djz-server-001 192.168.2.163 7001,7002,Admin@1 ...
- 等保审核 --- MySQL密码复杂度--和连接错误超时等
系统版本: Centos 7 MySQL版本: 5.7.19 架构: 主从架构 审计插件: validate_password.so(数据库自带5.6后版本都拥有此插件) 操作过程: 1). 安装va ...