首页 > 编程语言 >python内置模块:os、sys、json

python内置模块:os、sys、json

时间:2022-10-20 21:26:16浏览次数:52  
标签:python sys json print path os 目录

目录

一、os模块

OS作为计算机系统资源的管理者 主要跟当前程序所在的操作系统打交道

基本格式
import os

os模块主要用来创建文件、目录、修改名字、删除文件、获取路径、判断是否时文件夹以及文件

1 os.mkdir() os.makedirs() 创建目录(文件夹)

os.mkdir() os.makedirs() 都可以创建单机目录
​ 只有 os.makedirs() 可以创建单级目录和多级目录

1.mkdir() 可以创建单机目录

import os

os.mkdir(r'd1')  # 相对路径 在执行文件所在的路径下创建目录。可以创建单机目录,每次只可以生成一级目录,不能一次创建多级的目录

os.mkdir(r'd2\d22\d222')  # 报错  不可以创建多级目录

2.makedirs() 可以创建单级目录和多级目录

makedirs()   # 一次创建多级目录

os.makedirs(r'd2\d22\d222')
os.makedirs(r'd1') 

2 os.rmdir() os.makedirs() 删除目录

os.rmdir() 可以删除单机目录
os.makedirs() 可以删除单级目录和多级目录

os.rmdir() os.remobedirs()都只能删除空的单级目录

1.os.rmdir()  可以删除单机目录
os.rmdir(r'd1')  # 只可以一次删除一级目录
os.rmdir(r'd2\d22\d222')  # 报错 不可以一次删除多级目录

2.os.removedirs()  可以删除多级目录
os.removedirs(r'd2\d22\d222\d2222')  # 只能删除空的多级目录,且路径要选到 

3 os.listdir() 列举内容名称

os.listdir()列举指定路径下文件名称

os.listdir()  隐藏文件也可以显示,默认是执行文件当前的路径下

print(os.listdir(r'/Users'))
print(os.listdir())  # 不填路径就是默认是当前文件路径
-------------------------------------
['.localized', 'duoduo', 'Shared']
['sys模块.py', 'os模块.py', 'json 实战.py', 'a.txt', 'md1', 'json模块.py']

4 os.rename()重命名文件和 os.remove() 删除文件

1.os.rename(A, B) 将 A文件 重命名为 B文件
os.rename(r'a.txt'.r'aaa.txt')

2.os.remove(A)  将 A 文件删除
os.remove(r'aaa.txt')

5 os.getcwd()获取当前工作目录 和os.chdir()切换当前工作目录

1.os.getcwd() 获取当前目录

os.getcwd()   # 获取当前目录
print(os.getcwd()) 
-------------------------------
/Users/duoduo/pythonProject/python基础/day 10.20

2.os.chdir() 切换目录

os.chdir()  # 切换到目录

os.chdir('..')  # 切换到上级目录

# 可以通过创建文件夹知道现在的工作目录是什么
os.mkdir(r'a.txt') 
os.mkdir(r'b')  
------------------------------
/Users/duoduo/pythonProject/python基础/a.txt
/Users/duoduo/pythonProject/python基础/b
  • os.path

6 动态获取项目根路径***

os.path.abspath(__file__) 获取执行文件的绝对路径
os.path.dirname(__file__) 获取执行文件所在的目录路径

__file__表示显示文件(执行文件)当前的位置

1.os.path.abspath(__file__) 获取执行文件的绝对路径

os.path.abspath(__file__)
print(os.path.abspath(__file__))
------------------------------------
/Users/duoduo/pythonProject/python基础/day 10.20/os模块.py

2.os.path.dirname(__file__) 获取执行文件所在的目录路径

os.path.dirname(__file__)
print(os.path.dirname(__file__))
------------------------------------
/Users/duoduo/pythonProject/python基础/day 10.20

​ 可以通过在启动文件中添加这两个获取路径来动态获取路径,当启动文件移动位置后也不会报错

image-20221020102310391

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

1.os.path.exists() 判断文件路径是否存在

os.path.exists()  判断文件路径是否存在

print(os.path.exists(r'bbb.txt'))  # 判断文件路径是否存在  True
print(os.path.exists(r'/Users/duoduo/pythonProject/python基础/day 10.20'))  # 判断目录是否存在  True

2.os.path.isfile() 如果path是一个存在的文件,返回True,否则返回False

os.path.isfile()  如果path是一个存在的文件,返回True,否则返回False

print(os.path.isfile(r'/Users/duoduo/pythonProject/python基础/day 10.20/json 实战.py'))  # 判断路径是否是文件  True
print(os.path.isfile(r'/Users/duoduo/pythonProject/python基础/day 10.19'))  # 判断路径是否是文件  False

3.os.path.isdir() 判断路径是否有该目录

os.path.isdir()   如果path是一个存在的目录,则返回True否则返回False

print(os.path.isdir(r'/Users/duoduo/pythonProject/python基础/day 10.20/json 实战.py'))  # False
print(os.path.isdir(r'/Users/duoduo/pythonProject/python基础/day 10.19'))  # True

8 os.path.join(路径1,路径2)路径拼接

"""
设计到路径拼接一定不要自己做,因为不同的操作系统路径分隔符不一样
"""
1.os.path.join(路径1,路径2)

s1 = r'/Users/duoduo/pythonProject/python基础/day 10.20'
s2 = r'sys模块.py'

print(f'{s1}\{s2}')  # 由于系统不同 分隔符不同,很容易出错

print(os.path.join(s1, s2))  # join方法会自动添加正确的分隔符
-------------------------------------
/Users/duoduo/pythonProject/python基础/day 10.20\sys模块.py  # 错
/Users/duoduo/pythonProject/python基础/day 10.20/sys模块.py

9 os.path.getsize()

os.path.getsize()  获取文件大小 以字节为单位

print(os.path.getsize(r'/Users/duoduo/pythonProject/python基础/day 10.20/json模块.py'))  
----------------
583

二、sys模块

sys模块是与python解释器交互的一个接口

# 基本格式
import sys

sys模块主要是跟python解释器打交道 可以查看路径、解释器版本信息、平台信息、编码信息

1 sys.path

sys.path  获取执行文件的 sys.path 系统环境变量

import sys
print(sys.path)

2 sys.getrecursionlimit()递归深度

1.sys.getrecursionlimit()  获取python解释器默认最大的递归深度

print(sys.getrecursionlimit())  # 1000



2.sys.setrecursionlimit() 修改最大递归深度

sys.setrecursionlimit(2000)
print(sys.getrecursionlimit())  # 2000

3 sys.version获取版本 sys.platform获取平台

1. sys.version  # 获取版本

print(sys.version)
-------------------------------------
3.9.6 (default, Aug  5 2022, 15:21:02) 
[Clang 14.0.0 (clang-1400.0.29.102)]

2.  sys.platform  # 获取平台

print(sys.platform)
-------------------------------------
darwin

4 sys.argv

res = sys.argv  命令行参数List,第一个元素是程序本身路径

# 在终端中操作
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 json格式数据为什么可以实现不同语言之间的交互

1.所有语言都认识json格式的数据(json格式数据都是字符串类型)
2.所有语言对应json格式都有对应的数据类型可以对上

image-20221020112009658

2 json格式数据的作用:

1.转换格式
2.作数据交互

3 json格式数据的特征

1 json格式的数据都是字符串

2 且字符串中的引号都是双引号()

# 举例 
import json

info_dict = {'name': 'jason', 'pwd': 123}
json_str = json.dumps(info_dict)
print(json_str,type(json_str))
-------------------------------
{"name": "jason", "pwd": 123} <class 'str'>

4 json相关操作

1.针对数据 dumps loads

1.1 json.dumps()

json.dumps()  序列化:将其他数据类型>转换成>json格式字符串

# 举例
import json

info_dict = {'name': 'jason', 'pwd': 123}
json_str = json.dumps(info_dict)
print(json_str,type(json_str))
---------------------------------
{"name": "jason", "pwd": 123} <class 'str'>  # json字符串中引号以双引号出现

1.2 json.dumps()

json.loads()  反序列化:json格式字符串>转换成>数据类型

# 举例
import json

info_dict = {'name': 'jason', 'pwd': 123}
json_str = json.dumps(info_dict)

dict_d1 = json.loads(json_str)
print(dict_d1,type(dict_d1))
---------------------------------
{'name': 'jason', 'pwd': 123} <class 'dict'>
  • 以文件形式写入字典
import json

user_dict = {'name': 'jason', 'pwd': 123}
'''将字典写入文件并且取出之后还是字典'''

with open(r'a.txt', 'w', encoding='utf8') as f:
    json_str = json.dumps(user_dict)  # 序列化:数据类型 转换成  >>> json格式字符串
    f.write(json_str)
    print(json_str, type(json_str))

with open(r'a.txt', 'r', encoding='utf8') as f:
    json_str = f.read()
    json_dict = json.loads(json_str)  # 反序列化:json格式字符串 转换成  >>> 数据类型
    print(json_str,type(json_dict))
    
{"name": "jason", "pwd": 123} <class 'str'>
{"name": "jason", "pwd": 123} <class 'dict'>    

2.针对文件 dump load

1. json.dump()  dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件

2. json.load()  load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
  • 以文件形式写入字典
import json

user_dict = {'name': 'duo', 'pwd': 999}
'''将字典写入文件并且取出之后还是字典'''

with open(r'a.txt', 'w', encoding='utf8') as f:
    # json_str = json.dumps(user_dict)  # 序列化:数据类型 转换成  >>> json格式字符串
    # f.write(json_str)
    # print(json_str, type(json_str))
    json.dump(user_dict, f)  # 将某个数据序列化并写入文件

with open(r'a.txt', 'r', encoding='utf8') as f:
    # json_str = f.read()
    # json_dict = json.loads(json_str)  # 反序列化:json格式字符串 转换成  >>> 数据类型
    # print(json_str,type(json_dict))
    res = json.load(f)
    print(res)
 
-----------a.txt中的数据------------
{"name": "duo", "pwd": 999}

5.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('密码错误')

标签:python,sys,json,print,path,os,目录
From: https://www.cnblogs.com/DuoDuosg/p/16811330.html

相关文章

  • Python学习路程——Day19
    Python学习路程——Day19os模块1、os.mkdir() 创建目录(文件夹)'''语法结构: importos os.mkdir() os.makedirs()r的作用是让\起作用'''importosos.mkdir(r......
  • os 模块 sys模块 json模块
    今日内容详细os模块(重要)os模块主要与代码运行所在的操作系统打交道importos1.创建目录1.创建目录(文件夹)os.mkdir(r'L4')#只可以创建单级目录相对路......
  • python 图形的数据处理 (折线图为例)
    1.通过json模块对数据进行处理ab173.com是懒人工具-json在线解析,可以通过他对json数据进行格式化的分析。"""演示可视化需求1:折线图开发"""importjsonfrompyec......
  • 内置模块之os、sys模块
    内置模块之os、sys模块os与sys模块的区别os模块主要与操作系统打交道sys模块主要与python解释器打交道os模块os模块主要用于对接我们的操作系统。os模块主要有以下......
  • python进阶之路18 os、sys、json模块
    os模块与sys模块os模块主要与操作系统打交道sys模块主要与python解释器打交道os模块(重要)os模块主要与代码运行所在的操作系统打交道importos#1.创建目录(......
  • 吐血整理python数据分析利器pandas的八个生命周期!
    这里从八个pandas的数据处理生命周期,整理汇总出pandas框架在整个数据处理过程中都是如何处理数据的。【阅读全文】也就是从pandas的数据表对象以及数据汇总、数据统计等......
  • bochs-2.7 make编译时出错cannot generate system identifier for public text "-//OA
    问题错误日志在使用命令sudomake编译bochs-2.7时,遇到以下报错:make-Cdoc/docbookmake[1]:Enteringdirectory'/opt/bochs-2.7/doc/docbook'mkdir-pdevelopmen......
  • 常用内置模块之os、sys、json简介
    昨日内容回顾包的使用包与普通模块的使用相同。导入包实际是导入了包内的双下iter文件,可以使用该文件内的名称。软件开发目录规范启动相关文件夹bin......
  • 【java json基础】字符串转json json转字符串 json数组转换 【java基础知识】【实用】
    读书就是:从薄读厚,再从厚读薄的过程。(前部分:问答,后部分:测试举例)         数据测试:举例:      ......
  • python(os模块)
    模块os模块(重要)os模块是python中这里文件和目录最常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。创建文件夹​ os.mkdir():创建一个新的文件夹(目录......