首页 > 其他分享 >os模块

os模块

时间:2022-10-20 17:00:35浏览次数:37  
标签:bin 文件 json 模块 print path os

目录

os模块(重要)

os模块简介

os模块主要与操作系统打交道

目前,计算机上主流的操作系统有Windows、Unix、Mac OS等,os模块为多操作系统的访问提供了相关功能的支持,涉及对文件相关操作功能的实现,系统访问path路径的操作,shell命令行操作,Linux扩展属性的操作,流程管理,CPU等硬件相关信息的获取,基于操作系统的真正的随机数的操

Os库提供通用的、基本的操作系统交互功能:

  1. Os库是python标准库,包含几百个函数
  2. 常用路径操作、进程管理、环境参数等几类
  3. 路径操作:os.path子库,处理文件路径及信息
  4. 进程管理:启动系统中其他程序
  5. 环境参数:获得系统软件硬件信息等环境参数

创建目录

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')  # 可以一次性创建三个 如下图

image

删除目录

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

image

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'

image

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无权执行该文件')

image

json模块

简介

不同的编程语言之间的数据无法直接交互,需要中间有一个翻译官就是json模块。
所有编程语言拿到json数据,都可以将其转换为自己的一种数据类型,方便后续操作。
如python可以将json转为字典。
javascript可以将json转自定义对象。

image

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

相关文章

  • 一种简单的视图层数据查询模块数据流--视图、路由、API
    背景简介实现前台项目的搜索页时,通常会将查询参数直接传给路由并显示在顶部的地址。params参数可以路径的一部分,因此可以理解;不过保留query的目的暂不清楚,对SSR模......
  • CentOs 7 安装mysql(5.7.27)数据库
    CentOs7安装MySQL1.查看是否已经安装Mysql[root@srv01~]# rpm-qa|grepmysql# 如果你查看出来有东西,可以使用下面命令将其删除[root@srv01~]# ......
  • 【自然语言处理(NLP)】聊天机器人模块实现
    【自然语言处理(NLP)】聊天机器人模块实现作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践资源......
  • 终于把XGBoost总结写出来了!
    作者:王茂霖,华中科技大学,Datawhale成员内容概括XGBoost模型及调参总结XGBoost原理XGBoost优势总结XGBoost参数详解XGBoost快速使用XGBoost调参方法PPT下载:后台回复“210502”......
  • 【听如子说】-python模块系列-AIS编解码Pyais
    PyaisModuleIntroducepyais一个简单实用的ais编解码模块工作中需要和ais打交道,在摸鱼的过程中发现了一个牛逼的模块,对ais编解码感兴趣的可以拿项目学习一下,或者运用到......
  • 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......
  • CentOS——磁盘分区
    Centos7-磁盘分区磁盘层次结构–磁盘分区方法情况一:磁盘分区–磁盘小于2Tfdisk情况二:磁盘分区–磁盘大于2Tcentos6:partedcentos7:fdisk一、磁盘小于2T情况,fdisk分区1......
  • 防火墙基础之总部与总部之间OSPF路由配置​
    防火墙基础之总部与总部之间OSPF路由配置​原理概述:​防火墙(英语:Firewall)技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一......