目录
os模块(重要)
os模块简介
os模块主要与操作系统打交道
目前,计算机上主流的操作系统有Windows、Unix、Mac OS等,os模块为多操作系统的访问提供了相关功能的支持,涉及对文件相关操作功能的实现,系统访问path路径的操作,shell命令行操作,Linux扩展属性的操作,流程管理,CPU等硬件相关信息的获取,基于操作系统的真正的随机数的操
Os库提供通用的、基本的操作系统交互功能:
- Os库是python标准库,包含几百个函数
- 常用路径操作、进程管理、环境参数等几类
- 路径操作:os.path子库,处理文件路径及信息
- 进程管理:启动系统中其他程序
- 环境参数:获得系统软件硬件信息等环境参数
创建目录
os.mkdir()
import os
os.mkdir('bin') # 在当前目录下 创建一个空的bin文件夹
# 如果文件已存在会报错 # FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'bin'
import os
os.mkdir('bin')
os.mkdir('bin') # 如果文件已存在会报错
# FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'bin'
import os
os.mkdir(r'../bin') # 支持绝对路径 相对路径
print(os.mkdir) # <built-in function mkdir>
import os
os.mkdir(r'bin/start') # FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'bin/start'
# 不支持多级目录的创建 也就是说一次只能创建一个文件夹
os.makedirs()
# 1.即可以创单级目录 也可以创多级目录
import os
os.makedirs(r'bin/little_bin/small_bin') # 可以一次性创建三个 如下图
删除目录
os.rmdir()
# 1.只能删空的目录(文件夹)
import os
os.rmdir('bin') # OSError: [WinError 145] 目录不是空的。: 'bin'
# 2.不能一次性删除多级目录
import os
os.makedirs(r'bin/little_bin/small_bin')
os.rmdir(r'bin/little_bin/small_bin') # 只会删掉最内层的small_bin
os.removedirs()
# 1.可以删除多级目录 只能删空的目录 如果有额外的东西就会保留
import os
os.makedirs(r'bin/little_bin/small_bin')
os.removedirs(r'bin/little_bin/small_bin') # 会全部删干净 # 但如果有文件 不是空文件夹 则会保留
列举指定路径下文件名称
os.listdir()
# 1.列举当前执行文件所在目录的所有文件 当前目录
import os
os.mkdir('bin')
os.mkdir('conf')
os.mkdir('core')
os.mkdir('interface')
os.mkdir('db')
os.mkdir('lib')
os.mkdir('log')
print(os.listdir()) # ['.idea', 'bin', 'conf', 'core', 'db', 'interface', 'lib', 'log', 'start.py', 'venv']
# 2.支持相对路径 绝对路径
import os
print(os.listdir('.')) # ['.idea', 'bin', 'conf', 'core', 'db', 'interface', 'lib', 'log', 'start.py', 'venv']
print(os.listdir(r'c:/')) # 查看c盘文件 注意这里只适用于windows系统
删除文件 或 重命名
os.remove()
import os
os.remove('bin/hello') # 只能删除文件 不能删除目录
os.remove('bin') # PermissionError: [WinError 5] 拒绝访问。: 'bin'
os.rename()
# 1.可以修改文件和目录的名字
import os
os.rename('bin','new_bin') # 将当前目录下的bin文件夹 名字改为 new_bin
# 2.rename接受两个路径作为参数
os.rename('bin/name','bin/miku') # 修改bin文件夹下的name文件 将其名字改为miku
# 先找到左边的路径确认有没有文件 ————> 然后在右边的路径修改文件名字
获取、切换当前工作目录
os.getcwd()
os.chdir()
# 1.getcwd获取当前工作目录 chdir切换当前工作目录
import os
print(os.getcwd()) # D:\pythonProject03\day19
os.chdir('..') # 切换到上一级目录
print(os.getcwd()) # D:\pythonProject03
os.mkdir(r'hei')
动态获取项目根路径(重要)
os.path.abspath
# 跟__file__组合使用 __file__最好不要单独使用 容易出现兼容性问题
# 1.获取当前执行文件的绝对路径 兼容性好 在不同电脑也能获取
import os
print(__file__) # E:/Python文件/python_coldclass/start.py
print(os.path.abspath(__file__)) # E:\Python文件\python_coldclass\start.py
os.path.dirname(重要)
# 1.获取执行文件所在的目录 dirname指文件夹
import os
print(os.path.abspath(__file__)) # E:\Python文件\python_coldclass\start.py
print(os.path.dirname(__file__)) # E:/Python文件/python_coldclass
# 2.dirname的嵌套使用(重要)
print(os.path.dirname(__file__)) # E:/Python文件/python_coldclass
print(os.path.dirname(os.path.dirname(__file__))) # E:/Python文件
# 3.动态获取文件目录 给他加到sys.path
import sys
import os
base_dir = os.path.dirname(__file__) # 获取执行文件所在目录
sys.path.append(base_dir)
判断路径是否存在(重要)
os.path.exists()
print(os.path.exists(r'01 os模块.py')) # 判断文件路径是否存在 True
print(os.path.exists(r'D:\pythonProject03\day19')) # 判断目录是否存在 True
os.path.isfile()
print(os.path.isfile(r'01 os模块.py')) # 判断路径是否是文件 True
print(os.path.isfile(r'D:\pythonProject03\day19')) # 判断路径是否是文件 False
os.path.isdir()
# print(os.path.isdir(r'01 os模块.py')) # False
# print(os.path.isdir(r'D:\pythonProject03\day19')) # True
路径拼接(重要)
os.path.join()
# 涉及到路径拼接一定不要自己做 因为不同的操作系统路径分隔符不一样
s1 = r'D:\pythonProject03\day19'
s2 = r'01 os模块.py'
print(f'{s1}\{s2}') # 不要这样做
print(os.path.join(s1, s2)) # 使用os.path.join
os.path.getsize()
# 获取文件大小 以字节为单位
print(os.path.getsize(r'a.txt')) # 5 # hello
sys模块
跟python解释器打交道
基本使用
import sys
print(sys.path) # 获取执行文件的sys.path
print(sys.getrecursionlimit()) # 获取python解释器默认最大递归深度
sys.setrecursionlimit(2000) # 修改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.version_info) # 也是输出当前解释器版本信息 只不过输出的是结构化信息 可以用点取值
# sys.version_info(major=3, minor=8, micro=6, releaselevel='final', serial=0)
print(sys.platform) # 平台信息 win32(了解即可)
sys.argv(了解)
# 1.当py文件在命令行执行时 限制用户行为
# 在命令行才会起作用
res = sys.argv
print(res) # ['E:/Python文件/python_coldclass/start.py'] # 返回一个当前执行文件的绝对路径 存在列表里
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模块。
所有编程语言拿到json数据,都可以将其转换为自己的一种数据类型,方便后续操作。
如python可以将json转为字典。
javascript可以将json转自定义对象。
json.dumps() 、json.loads()
# 1.dumps可以将字典类型转换为json格式的字符串
d1 = {'miku':'999','alice':'666','cloud':'0'}
print(d1,type(d1))
import json
json_str = json.dumps(d1) # {'miku': '999', 'alice': '666', 'cloud': '0'} <class 'dict'>
print(json_str,type(json_str)) # {"miku": "999", "alice": "666", "cloud": "0"} <class 'str'>
print(str(d1)) # {'miku': '999', 'alice': '666', 'cloud': '0'}
# 2.双引号是json字符串的特权
d1 = {"miku":"999","alice":"666","cloud":"0"} # 双引号字典
print(str(d1)) # {'miku': '999', 'alice': '666', 'cloud': '0'}
print(d1) # {'miku': '999', 'alice': '666', 'cloud': '0'}
# 也就是你在字典中使用双引号 实际还是单引号
# 2.loads就是反向操作 将json转字典
import json
d1 = {'miku':'999','alice':'666','cloud':'0'}
print(json.dumps(d1)) # {"miku": "999", "alice": "666", "cloud": "0"}
json_data = json.dumps(d1)
dict_obj = json.loads(json_data)
print(dict_obj) # {'miku': '999', 'alice': '666', 'cloud': '0'} # 注意,变单引号了
print(type(dict_obj)) # <class 'dict'>
json.dump() 、json.load()
'''dump load打交道的都是文件对象 可以在with下面子代码块使用'''
# 1.使用dump
d1 = {'miku':'999','alice':'666','cloud':'0'}
with open('a.txt','w',encoding='utf8') as f:
json.dump(d1,f) # 完成两个操作
# 1.将d1字典转化为json字符串
# 2.将json写入f文件对象
# 2.使用load
with open('a.txt','r',encoding='utf8') as f2:
dict_obj = json.load(f2) # load文件对象
print(dict_obj) # {'miku': '999', 'alice': '666', 'cloud': '0'}
print(type(dict_obj)) # <class 'dict'>
标签:bin,文件,json,模块,print,path,os
From: https://www.cnblogs.com/passion2021/p/16810189.html