首页 > 其他分享 >os,sys,json模块

os,sys,json模块

时间:2022-10-20 17:12:30浏览次数:50  
标签:路径 sys json print path os 目录

目录

os模块(重要)

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

import os
1. 创建目录(文件夹)
ps:加上r是解决对文件路径并且撬棍跟一些字母的组合会产生特殊的含义导致路径查找混乱

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')  # 可以删除多级目录
os.removedirs(r'd2\d22\d222')  # 只能删除空的多级目录,里面文件无法删除
os.rmdir(r'd3')  # 只能删除空的单级目录

3.列举指定路径下内容名称
print(os.listdir())  # 列出当前执行文件所在路径
print(os.listdir(r'D:\\'))  # 列出D盘所在目录和文件

4. 删除/重命名文件
os.rename(r'a.txt', r'aaa.txt')
os.remove(r'aaa.txt')

5.获取/切换当前工作目录
print(os.getcwd())  # D:\pythonProject\day1
os.chdir('..')  # 返回上一级目录
print(os.getcwd())  # D:\pythonProject
os.mkdir('hei')

6.动态获取项目根路径(重要)
print(os.path.abspath(__file__))  # 获取执行文件的绝对路径 D:\pythonProject\day1\test2.py
print(os.path.dirname(__file__))  # 获取执行文件所在目录路径 D:/pythonProject/day1

7. 判断路径是否存在(文件、目录)
print(os.path.exists(r'test2.py'))  # 判断文件路径是否存在  True
print(os.path.exists(r'D:/pythonProject/day1'))  # 判断目录是否存在 True

print(os.path.isfile(r'test2.py'))  # 判断路径是否是文件 True
print(os.path.isfile(r'D:/pythonProject/day1'))  # 判断路径是否为文件 False
print(os.path.isdir(r'D:/pythonProject/day1'))  # True
print(os.path.isdir(r'test2.py'))  # False

8. 路径拼接(重要)
s1 = r'D:/pythonProject/day1'
s2 = r'test2.py'
print(f'{s1}\{s2}')
"""
涉及到路径拼接一定不要自己做 因为不同的操作系统路径分隔符不一样
"""

print(os.path.join(s1,s2))  # D:/pythonProject/day1\test2.py

9.获取文件大写(字节)
print(os.path.getsize(r'a.txt'))  # 5 英文数字一个字节,中文3个字节

sys模块

import sys

print(sys.path)  # 获取执行文件的sys.path路径
print(sys.getrecursionlimit())  #获取python解释器默认最大递归深度
sys.setrecursionlimit(1500)  # 修改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 无权执行该文件')

image

json模块

json模块也称为序列化模块 序列化可以打破语言限制实现不同编程语言之间数据交互

json格式数据的作用
实现不同编程语言数据可以互相交互
json格式数据的形式
    字符串类型并且引号都是双引号

import json
json相关操作
    针对数据
    json.dumps() 序列化(将python数据类型转换成json格式字符串)
    json.loads() 反序列化(将json格式字符串转换成对应的数据类型)

dict1 = {'name':'jason','pwd':123,'age':18}
str_dcit1 = json.dumps(dict1)  # 序列化:将一个字典转换成一个字符串
print(type(str_dcit1),str_dcit1)  # <class 'str'> {"name": "jason", "pwd": 123, "age": 18}
# ps:json转换完的字符串类型的字典中的字符串是由""表示的

dict2 = json.loads(str_dcit1)  # 反序列化:将一个字符串格式的字典转换成一个字典
print(type(dict2), dict2)  # <class 'dict'> {'name': 'jason', 'pwd': 123, 'age': 18}
# ps:要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示


list_dic = [1,['aa','bb','cc'],3,{'ke1':'vu1','ke2':'vu2'}]
str_dict = json.dumps(list_dic) # 可以处理嵌套数据类型
print(type(str_dict), str_dict)  # <class 'str'> [1, ["aa", "bb", "cc"], 3, {"ke1": "vu1", "ke2": "vu2"}]

list_dic2 = json.loads(str_dict)
print(type(list_dic2),list_dic2)  # <class 'list'> [1, ['aa', 'bb', 'cc'], 3, {'ke1': 'vu1', 'ke2': 'vu2'}


针对文件
   json.dump() 将其它数据类型直接写入文件(自动转json格式字符串)
   json.load() 将文件数据直接转成对应的数据类型(自动反序列化)


data = {'name':'jason', 'pwd':123, 'age':18}
with open(r'jason.json','w',encoding='utf8') as f:
    json.dump(data,f)


with open(r'jason.json','r',encoding='utf8') as f:
    loaded_json = json.load(f)
    print(type(loaded_json),loaded_json)  # <class 'dict'> {'name': 'jason', 'pwd': 123, 'age': 18}

json模块实战

# 用户登录注册功能
import os
import json
# 注册功能
# 1.获取执行文件所在的目录路径
base_dir = os.path.dirname(__file__)  # D:/pythonProject/day1
# 2.拼接出db目录的路径
db_dir = os.path.join(base_dir,'db')  # D:/pythonProject/day1\db
# 3. 创建db目录
if not os.path.isdir(db_dir):
    os.mkdir(db_dir)
# 4. 获取用户数据
username = input('username>>>>:').strip()
password = input('password>>>>:').strip()
# 5. 判断用户名是否已存在
# print(os.listdir(db_dir)) ['jason.json','kevin.json','tony.json'] # 方式1
user_file_path=os.path.join(db_dir,f'{username}.json')  # 方式2 
if not os.path.isfile(user_file_path):
    print('用户名不存在')
    exit(3)
# 6. 构建用户字典
user_dict = {'username': username,
             'password': password,
             'account': 15000, # 账户余额
             'shop_car': []
             }
# 7. 拼接存储用户数据的文件路径
user_file_path = os.path.join(db_dir,f'{username}.json')
# 8. 写入文件数据
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('密码错误')

标签:路径,sys,json,print,path,os,目录
From: https://www.cnblogs.com/winter-yu1989/p/16810527.html

相关文章

  • 【THM】-Post-Exploitation Basics(后渗透基础)-学习
    观前提示本文相关的TryHackMe实验房间链接:https://tryhackme.com/room/postexploit介绍本文主要涉及关于后渗透的基础知识,主要内容有:使用powerview和Bloodhound进行后......
  • CentOS 8 添加SSH远程登录端口并禁用22端口
    本次新加端口为:502020X01备注:本段操作是在防火墙开启的状态下进行一:修改SSH配置文件,目录为:vim/etc/ssh/sshd_config:1.按i进入编辑状态,按上下键找到“#Port22”这......
  • adobe安装提示错误“Error:SyntaxError:JSON Parse error:Unexpected EOF”的解决方法
    mac电脑安装Adobe时,会提示错误“Error:SyntaxError:JSONParseerror:UnexpectedEOF”,这是怎么回事儿的,不管您是安装AI、PS、PR还是LR,如果也遇到相同的问题,可以参考一下方......
  • postgresql13源码安装部署并部署主从同步和切换
    环境:Os:Centos7DB:13.8主库:192.168.1.134从库:192.168.1.135 ########################################主库:192.168.1.134######################################......
  • os模块
    目录os模块(重要)os模块简介创建目录os.mkdir()os.makedirs()删除目录os.rmdir()os.removedirs()列举指定路径下文件名称os.listdir()删除文件或重命名os.remove()os.renam......
  • CentOs 7 安装mysql(5.7.27)数据库
    CentOs7安装MySQL1.查看是否已经安装Mysql[root@srv01~]# rpm-qa|grepmysql# 如果你查看出来有东西,可以使用下面命令将其删除[root@srv01~]# ......
  • 终于把XGBoost总结写出来了!
    作者:王茂霖,华中科技大学,Datawhale成员内容概括XGBoost模型及调参总结XGBoost原理XGBoost优势总结XGBoost参数详解XGBoost快速使用XGBoost调参方法PPT下载:后台回复“210502”......
  • os用法
    os.path.dirname(path)语法:os.path.dirname(path)功能:去掉文件名,返回目录如:print(os.path.dirname("E:/Read_File/read_yaml.py"))#结果:E:/Read_Fileprint(os.path......
  • AIGW50N65H5英飞凌车规MOS管\原装现货ASEMI代理
    编辑:llAIGW50N65H5英飞凌车规MOS管\原装现货ASEMI代理型号:AIGW50N65H5品牌:ASEMI封装:TO-247最大漏源电流:50A漏源击穿电压:650VRDS(ON)Max:0.08Ω引脚数量:3特性:车规级MO......
  • 内置重要模块(os,json,sys)
    os模块  os模块主要与操作系统进行交互importos#1.创建目录mkdir/makedirsos.mkdir(r'a')os.mkdir(r'a\bb')os.mkdir(r'a\bb\ccc')mk......