python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python os模块

Python标准库之os模块详解

作者:士别三日wyx

Python的os模块是用于与操作系统进行交互的模块,它提供了许多函数和方法来执行文件和目录操作、进程管理、环境变量访问等,本文详细介绍了Python标准库中os模块,感兴趣的同学跟着小编一起来看看吧

OS标准库是操作系统接口模块,提供了操作系统相关功能的调用函数。

使用OS标准库前,需要导入模块 import os

1、文件目录操作

os.stat() 获取文件状态

获取文件或文件描述符的状态,返回一个 stat_result 对象。

还有一些属性需要在Unix系统上才能调用:

os.utime() 修改文件时间

修改文件的访问时间和修改时间,修改后需要重新获取 stat_result 对象,才会更新。

语法

os.uime( path, (atime, mtime))

参数

实例

import os
os.utime('newDir/myFile', (1491413771, 1591413771))
statResult = os.stat('newDir/myFile')
print(statResult.st_atime)
print(statResult.st_mtime)

输出:

1491413771.0
1591413771.0

os.rename() 修改文件/目录

修改文件名或目录名。

语法

os.rename( src, dst )

参数

实例

import os
os.rename('myFile', 'newName')

对于Windows系统,文件名已存在会报错 FileExistsError。

对于Unix系统,将文件重命名为目录会报错 IsADirectoryError;将目录重命名为文件会报错 NotADirectoryError。

os.renames() 递归修改文件/目录

递归修改文件名或目录名。先创建所需要的中间目录,重命名后,再调用 removedirs() 删除旧路径中不需要的目录。

语法

os.renames( old, new )

参数

old:(必选)旧路径new:(必选)新路径

实例

import os
os.renames('myFile', 'newDir/myFile')

os.replace() 替换文件/目录

修改文件名或目录名,如果文件名已存在,则会静默修改;如果目录已存在,则会报错 OSError。

语法

os.replace( old, new )

参数

实例

import os
os.replace('myFile', 'newDir/myFile')

os.remove() 删除文件

删除文件,删除目录会报错 FileNotFoundError

语法

os.remove( path )

参数

实例

import os
os.remove('myFile')

os.getcwd() 获取工作目录

获取当前工作目录,也就是当前所在路径,返回字符串类型。

import os
print(os.getcwd())

输出:

E:\data\PrCharm\pythonProject1

os.getcwdb() 获取工作目录

获取当前工作目录,二进制序列(bytes)类型。

import os
print(os.getcwdb())

输出:

b'E:\\data\\PrCharm\\pythonProject1'

os.chdir() 修改工作目录

修改当前工作目录

语法

os.chdir( path )

参数

实例

import os
os.chdir('E://data')
print(os.getcwd())

输出:

E:\data

os.mkdir() 创建目录

创建目录,如果目录已存在会报错 FileExistsError,如果路径中父目录不存在会报错 FileNotFoundError。

语法

os.mkdir( path, mode )

参数

实例

import os
os.mkdir('myDir')

当前目录下创建了目录

在这里插入图片描述

os.makedirs() 创建多级目录

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

语法

os.makedirs( path, mode )

参数

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

实例

import os
os.makedirs('myDir/dir1')

当前目录下创建了目录

在这里插入图片描述

os.rmdir() 删除目录

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

语法

os.rmdir( path )

参数

实例

import os
os.rmdir('newDir')

os.removedirs() 删除多级目录

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

语法

os.removedirs( path )

参数

实例

import os
os.removedirs('myDir/dir1')

2、系统信息

os.name 获取操作系统类型

获取操作系统的类型,只有三个值 nt posix 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 )

参数

实例

import os
print(os.getenv('TEMP'))

输出:

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

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

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

语法

os.get_exec_path( 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 )

参数

实例

mport os
print(os.urandom(8))

输出:

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

3、进程管理

创建和管理进程的函数。

os.times() 获取进程时间

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

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 信号给当前进程,用来终止进程,如果进程没有中断,则函数不会返回。

语法

os.abort()

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

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

补充:

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 )

参数

实例

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')

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

4、错误/异常

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

BlockingIOError

OSError 的子类

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

ChildProcessError

OSError 的子类

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

ConnectionError

OSError 的子类

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

BrokenPipeError

ConnectionError 的子类

管道中断时触发。

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

ConnectionAbortedError

ConnectionError 的子类

连接被对端终止时触发。

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

ConnectionRefusedError

ConnectionError 的子类

连接被对方拒绝时触发。

常见的原因有:

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

ConnectionError 的子类

对端重置连接时触发。

常见的原因有:

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

OSError 的子类

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

FileNotFoundError

OSError 的子类

请求的文件或目录不存在时触发

InterruptedError

OSError 的子类

系统调用被传入信号中断时触发

IsADirectoryError

OSError 的子类

对目录执行文件操作时触发

NotADirectoryError

OSError 的子类

对文件执行目录操作时触发

PermissionError

OSError的子类

执行的操作没有足够的访问权限时触发

ProcessLookupError

OSError的子类

指定的进程不存在时触发

TimeoutError

OSError的子类

系统功能在系统级别的超时时触发

以上就是Python标准库之os模块详解的详细内容,更多关于Python os模块的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文