《Python入门到精通》os模块详解,Python os标准库_os(1)

os.makedirs() 创建多级目录

创建多级目录,上级目录不存在也会自动创建。

语法

os.makedirs( path, mode )

参数

  • path:(必选)目录的路径(绝对路径/相对路径)
  • mode:目录的权限(某些系统会忽略)

实例

import os

os.makedirs('myDir/dir1')

当前目录下创建了目录

在这里插入图片描述

os.rmdir() 删除目录

删除目录,如果目录不存在,会报错 FileNotFoundError;如果目录不为空,会报错 OSError。

语法

os.rmdir( path )

参数

  • path:(必选)需要删除的目录(绝对路径/相对路径)

实例

import os

os.rmdir('newDir')

os.removedirs() 删除多级目录

递归删除多级目录,如果删除了最后一级目录,会尝试依次删除上级目录(删除不掉不会报错,因为大多是因为目录不为空)。

语法

os.removedirs( path )

参数

  • path:(必选)目录路径

实例

import os

os.removedirs('myDir/dir1')

2、系统信息

os.name 获取操作系统类型

获取操作系统的类型,只有三个值ntposixjava

  • nt:Windows系统
  • posix:Linux/mac系统
  • java:java虚拟机

比如,我的电脑是Windows,就返回 nt

import os

print(os.name)

输出:

nt

os.environ 获取环境变量

获取系统环境变量等各种系统信息(导入OS模块时自动收集),字典格式,可以根据建获取

Windows常用字段

os.environ['HOMEPATH']		# 当前用户主目录。
os.environ['TEMP']			# 临时目录路径。
os.environ["PATHEXT"]		# 可执行文件。
os.environ['SYSTEMROOT']	# 系统主目录。
os.environ['LOGONSERVER']	# 机器名。

Linux常用字段

os.environ['USER']			# 当前使用用户。
os.environ['LC\_COLLATE']	# 路径扩展的结果排序时的字母顺序。
os.environ['SHELL']			# 使用shell的类型。
os.environ['LAN']			# 使用的语言。
os.environ['SSH\_AUTH\_SOCK']	# ssh的执行路径。

环境变量的增删改查操作

import os

environ = os.environ
# 新增
environ['环境变量名'] = '环境变量值'
# 删除
del environ['环境变量名']
# 修改
environ['环境变量名'] = '新环境变量值'
# 查询(变量不存在则返回默认值)
environ['环境变量名']
environ.get('环境变量名', '默认值')
# 判断(存在返回True,不存在返回False)
'环境变量值' in environ

os.getenv() 获取环境变量

根据环境变量名,获取环境变量的值,如果环境变量名不存在,就返回default。

语法

os.getenv( key, default )

参数

  • key:(必选,str类型)环境变量名
  • default:(可选)环境变量不存在时返回,默认值是 None

实例

import os

print(os.getenv('TEMP'))

输出:

C:\Users\WANGYU~1\AppData\Local\Temp

os.get_exec_path() 获取可执行文件路径

获取可执行文件路径,从 environ 对象中,返回可执行文件目录的列表。

语法

os.get_exec_path( environ )

参数

  • environ:(可选)默认值None,即使用当前的 environ。

实例

import os

print(os.get_exec_path())

输出:

['E:\\data\\PrCharm\\pythonProject1\\venv\\Scripts', 'C:\\......

os.cpu_count() 获取CPU数量

返回系统的CPU数量,不确定就返回None。

语法

os.cpu_count()

实例

import os

print(os.cpu_count())

输出:

8

os.getlogin() 获取登录用户

获取当前登录用户,准确来说,是通过控制终端进程进行登录的用户名。

import os

print(os.getlogin())

os.getpid() 获取当前进程ID

获取当前进程ID

import os

print(os.getpid())

输出:

8212

os.getppid() 获取父进程ID

获取当前进程的父进程ID

import os

print(os.getppid())

输出:

14132

os.urandom() 获取随机字节

获取指定大小的随机字节,常用于加密。

语法

os.urandom( size )

参数

  • size:(必选)指定随机字节的大小

实例

mport os

print(os.urandom(8))

输出:

b'\xb1\n\xbaw2\x88\x84\xf8'

2、进程管理

创建和管理进程的函数。

os.times() 获取进程时间

返回当前的全局进程时间,列表形式,有5个属性。

  • user:用户时间
  • system:系统时间
  • children_user:所有子进程的用户时间
  • children_system:所有子进程的系统时间
  • elapsed:从过去的固定时间点起,经过的真实时间

Windows系统上,只有user、system两个属性有值,其他均为0。

语法

os.times()

实例

import os

times = os.times()
print(times)

输出:

nt.times_result(user=0.046875, system=0.109375, children\_user=0.0, children\_system=0.0, elapsed=0.0)

os.abort() 中断当前进程

发送SIGABRT信号给当前进程,用来终止进程,如果进程没有中断,则函数不会返回。

  • Unix系统会生成一个核心转储文件
  • Windows系统立即返回退出代码

语法

os.abort()

比如,当程序出现严重错误时,调用 os.abort() 终止进程。

import os

try:
    # 业务代码
    pass
except:
    os.abort()

补充:

  • SIGABRT用来中止一个程序,处理函数返回后,所有打开的文件描述符将会被关闭,流也会被flush,程序也会结束。
  • SIGABRT是一个暴力信号,可能会破坏进程的状态,应该谨慎使用。

os.system() 执行系统命令

执行系统命令,并在控制台输出执行结果

语法

os.system( commend )

参数

  • commend:(必选)需要执行的命令

实例

import os

os.system('ping www.baidu.com')

输出:

���� Ping www.a.shifen.com [39.156.66.18] ���� 32 �ֽڵ�����:
���� 39.156.66.18 �Ļظ�: �ֽ�=32 ʱ��=17ms TTL=50
���� 39.156.66.18 �Ļظ�: �ֽ�=32 ʱ��=16ms TTL=50

os.popen() 执行shell命令

通过Python执行系统命令,返回命令的执行结果(文本类型的对象)。

语法

os.popen( command, mode, buffer )

参数

  • command:(必选)需要执行的命令
  • mode:(可选)文件打开模式,默认值 r(只读模式)
  • buffer:缓冲区大小,

实例

import os

out = os.popen('ping www.baidu.com')
print(out.read())

输出:

正在 Ping www.a.shifen.com [39.156.66.14] 具有 32 字节的数据:
来自 39.156.66.14 的回复: 字节=32 时间=13ms TTL=50
来自 39.156.66.14 的回复: 字节=32 时间=48ms TTL=50

os.startfile() 打开文件

自动打开文件,绝对路径要用/,相对路径要用 \

语法

os.startfile( path )

实例

import os

os.startfile('newDir\myFile')

执行后,桌面上会打开指定的文件。

3、错误/异常

OS模块所有函数都会抛出OSError及其子类

BlockingIOError

OSError的子类

当在设置为非阻塞操作的对象(例如:套接字)上,执行阻塞操作时触发。

ChildProcessError

OSError的子类

子进程上的操作失败时触发。

ConnectionError

OSError的子类

与连接相关的问题的基类,常见的有它的子类。

BrokenPipeError

ConnectionError的子类

管道中断时触发。

管道是单向通信的,在管道另一端关闭时写入,或者在已经关闭的套接字上写入,都会导致管道中断。

ConnectionAbortedError

ConnectionError的子类

连接被对端终止时触发。

这种异常通常意味着网络连接被意外中断,可能是服务器出现故障、网络拥堵等原因导致的,比如 服务器返回的响应超时或断开了连接。

ConnectionRefusedError

ConnectionError的子类

连接被对方拒绝时触发。

常见的原因有:

  1. 你想连接的服务器没有启动相关服务
  2. 防火墙阻止连接
  3. 端口被占用,关闭占用端口的服务
  4. IP或端口错误
ConnectionResetError

ConnectionError的子类

对端重置连接时触发。

常见的原因有:

  1. 高延迟或丢包等网络错误导致连接中断
  2. 防火墙等ACL访问控制出于安全原因阻止了连接

FileExistsError

OSError的子类

创建的文件或目录已经存在时触发

FileNotFoundError

OSError的子类

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取
CL访问控制出于安全原因阻止了连接

FileExistsError

OSError的子类

创建的文件或目录已经存在时触发

FileNotFoundError

OSError的子类

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
[外链图片转存中…(img-CksPaePo-1714146187735)]
[外链图片转存中…(img-yLrU1Qq8-1714146187736)]
[外链图片转存中…(img-7uGVd8jb-1714146187737)]
[外链图片转存中…(img-2wLZVs8k-1714146187738)]
[外链图片转存中…(img-1cXjDfjO-1714146187738)]
[外链图片转存中…(img-PCppYISe-1714146187739)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以点击这里获取

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值