Python中OS模块的常见20种用法总结
文章目录
前言
OS就是 “Operating System” 的缩写,顾名思义,OS模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用OS模块,一方面可以方便地与操作系统进行交互,另一方面也可以极大增强代码的可移植性。Python中的OS模块提供了与操作系统进行交互的函数。操作系统属于Python的标准实用程序模块。该模块提供了使用依赖于操作系统的函数的便携式方法。OS模块提供了非常丰富的方法用来处理文件和目录。
1、os.getcwd()
概述
os.getcwd() 方法用于返回当前工作目录。
语法
getcwd()方法语法格式如下:
os.getcwd()
参数: 无
返回值:返回当前进程的工作目录。
2、os.listdir()
概述
os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 . 和 … 即使它在文件夹中。
os.listdir(path)
参数: path – 需要列出的目录路径
返回值: 返回指定路径下的文件和文件夹列表。
实例:
import os
path = os.getcwd()
dirs = os.listdir(path)
for file in dirs:
print(file)
3、os.chdir()
概述
os.chdir() 方法用于改变当前工作目录到指定的路径。
语法
chdir()方法语法格式如下:
os.chdir(path)
参数:path – 要切换到的新路径。
返回值:如果允许访问返回 True , 否则返回False。
实例:
import os
path = "/tmp"
# 查看当前工作目录
retval = os.getcwd()
print ("当前工作目录为", retval)
# 修改当前工作目录
os.chdir(path)
# 查看修改后的工作目录
retval = os.getcwd()
print ("目录修改成功", retval)
执行以上程序输出结果为:
当前工作目录为 /www
目录修改成功 /tmp
4、os.mkdir()
概述
os.mkdir() 方法用于以数字权限模式创建目录。默认的模式为 0777 (八进制)。
如果目录有多级,则创建最后一级,如果最后一级目录的上级目录有不存在的,则会抛出一个 OSError。
语法
mkdir()方法语法格式如下:
os.mkdir(path[, mode])
参数:
path – 要创建的目录,可以是相对或者绝对路径。
mode – 要为目录设置的权限数字模式
返回值:
该方法没有返回值。
实列
以下实例演示了 mkdir() 方法的使用:
import os
here = os.getcwd()
# 创建的目录
path = "/hourly"
os.mkdir(here + path, 0755 )
print ("目录已创建")
5、os.makedirs()
概述
os.makedirs() 方法用于递归创建多层目录。
如果子目录创建失败或者已经存在,会抛出一个 OSError 的异常,Windows上Error 183 即为目录已经存在的异常错误。
如果第一个参数 path 只有一级,即只创建一层目录,则与 mkdir() 函数相同。
语法
makedirs()方法语法格式如下:
os.makedirs(name, mode=511, exist_ok=False)
参数
path – 需要递归创建的目录,可以是相对或者绝对路径。
mode – 权限模式,默认的模式为 511 (八进制)。。
exist_ok:是否在目录存在时触发异常。如果 exist_ok 为 False(默认值),则在目标目录已存在的情况下触发 FileExistsError 异常;如果 exist_ok 为 True,则在目标目录已存在的情况下不会触发 FileExistsError 异常。
返回值
该方法没有返回值。
实列:
import os
# 创建的目录
path = "home/monthly/daily"
os.makedirs(path, 0o777);
print ("路径被创建")
6、os.rmdir()
概述
os.rmdir()方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
语法
rmdir()方法语法格式如下:
os.rmdir(path)
参数
path – 要删除的目录路径
返回值
该方法没有返回值
实例
import os
# 列出目录
print("目录为:",os.listdir(os.getcwd()))
# 删除路径
os.rmdir("mydir")
# 列出重命名后的目录
print ("目录为:", os.listdir(os.getcwd()))
执行以上程序输出结果为:
目录为:['a1.txt','resume.doc','a3.py','mydir']
目录为:['a1.txt','resume.doc','a3.py']
7、os.remove()
概述
os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。
在Unix, Windows中有效
语法
remove()方法语法格式如下:
os.remove(path)
参数
path – 要移除的文件路径
返回值
该方法没有返回值。
实例
以下实例演示了 remove() 方法的使用:
import os
# 列出目录
print("目录为:", os.listdir(os.getcwd()))
# 移除
os.remove("aa.txt")
# 移除后列出目录
print("移除后目录为:", os.listdir(os.getcwd()))
执行以上程序输出结果为:
目录为: ['a1.txt', 'aa.txt', 'demo.py']
移除后目录为:['a1.txt', 'demo.py']
8、os.system()
概述
**os.system()**方法在子shell中执行命令(字符串)。该方法是通过调用标准C函数system()来实现的,并且具有相同的限制。如果命令生成任何输出,则将其发送到解释器标准输出流。无论何时使用此方法,都将打开操作系统的相应 shell 并在其上执行命令。
用法: os.system(command)
参数:
command: 它是字符串类型,告诉执行哪个命令。
返回值:在Unix上,返回值是进程的退出状态,在Windows上,返回值是系统 shell 程序在运行命令后返回的值。
实例:
import os
# Command to execute
# Using Windows OS command
cmd = 'date'
# Using os.system() method
os.system(cmd)
9、os.sep
概述
os.sep代表文件路径中的分隔符。在不同的操作系统中,文件路径的分隔符可能不同。在Unix和Linux系统中,分隔符通常是"/“,在Windows系统中,分隔符通常是”"。
os.sep的作用是作为文件路径分隔符,用于组织文件路径字符串。
import os
file_path = "data" + os.sep + "file.txt"
print(file_path)
执行以上程序输出结果为:
data\file.txt
10、os.path模块
1) os.path.isdir()
概述
os.path.isdir() 方法用于检查指定的路径是否为现有目录。此方法遵循符号链接,这意味着如果指定的路径是指向目录的符号链接,则该方法将返回True。
用法: os.path.isdir(path)
参数:
path:代表文件系统路径的path-like对象。
返回类型:此方法返回布尔型的布尔值。如果指定的路径是现有目录,则此方法返回True,否则返回False。
2) os.path.isfile()
概述
os.path.isfile() 用于检查指定的路径是否是现有的常规文件。
用法: os.path.isfile(path)
参数:
path:代表文件系统路径的path-like对象。 path-like对象是表示路径的字符串或字节对象。
返回类型:此方法返回布尔型的布尔值。如果指定的路径是现有的常规文件,则此方法返回True,否则返回False。
3) os.path.split()
概述
os.path.split() 方法用于将路径名称拆分为一对头部和尾部。在这里,tail是最后的路径名组成部分,而head是导致该名称的所有内容。
用法: os.path.split(path)
参数:
path:代表文件系统路径的path-like对象。 path-like对象是表示路径的str或bytes对象。
返回类型:此方法返回一个表示指定路径名的头和尾的元组。
4) os.path.splitdrive()
概述
os.path.splitdrive() 方法用于将路径名称拆分为一对驱动器和尾部。在这里,驱动器是安装点或空字符串,其余路径组件是尾部。
在不使用驱动器规范的系统上,驱动器将始终为空字符串。示例:UNIX。
在Windows上,os.path.splitdrive()方法将给定的路径名分为驱动器或UNC共享点作为驱动器,将其他路径组件作为尾部。
用法: os.path.splitdrive(path)
参数:
path:代表文件系统路径的path-like对象。 path-like对象是表示路径的str或bytes对象。
返回类型:此方法返回一个表示给定路径名的驱动器和尾部的元组。
5) os.path.join()
概述
os.path.join() 方法会智能地连接一个或多个路径组件。此方法将各个路径组成部分与每个非空部分之后的最后一个路径组成部分恰好用一个目录分隔符(/)串联在一起。如果要连接的最后一个路径组件为空,则将目录分隔符(‘/’)放在末尾。
如果路径组件表示绝对路径,那么将放弃所有先前连接的组件,并且从绝对路径组件继续进行连接。
用法: os.path.join(path, *paths)
参数:
path:代表文件系统路径的path-like对象。
*paths:代表文件系统路径的path-like对象。它表示要连接的路径组件。
path-like对象是表示路径的字符串或字节对象。
Note:python函数定义中的特殊语法* args(此处为* paths)用于将可变数量的参数传递给函数。
返回类型:此方法返回一个表示串联路径组件的字符串。
6) os.path.exists()
概述
os.path.exists() 方法用于检查指定的路径是否存在。此方法还可用于检查给定的路径是否引用了打开的文件描述符。
用法: os.path.exists(path)
参数:
path:代表文件系统路径的path-like对象。 path-like对象是表示路径的字符串或字节对象。
返回类型:此方法返回布尔型的布尔值。如果路径存在,则此方法返回True,否则返回False。
7) os.path.abcpath()
概述
os.path.abspath(path) 方法用于返回文件或者目录的绝对路径。
语法
格式如下:
os.path.abspath(path)
参数
path:表示要获取绝对路径的相对路径,可以是文件也可以是目录。
返回值:返回获取到的绝对路径。
8) os.path.basename()
概述
os.path.basename() 方法用于获取指定路径中的基本名称。此方法在内部使用os.path.split()方法将指定路径分为一对(头,尾)。os.path.basename()方法将指定的路径拆分为后返回尾部(头,尾)对。
用法: os.path.basename(path)
参数:
path:代表文件系统路径的path-like对象。
返回类型:此方法返回一个字符串值,该字符串值表示指定路径的基本名称。
9) os.path.dirname()
概述
os.path.dirname() 方法用于从指定路径获取目录名称。
用法: os.path.dirname(path)
参数:
path:代表文件系统路径的path-like对象。
返回类型:此方法返回一个字符串值,该字符串值表示指定路径中的目录名称。
10) os.path.splitext()
概述
os.path.splitext() 方法用于将路径名分为成对的根和扩展名。在这里,ext表示扩展,具有指定路径的扩展部分,而root是除ext以外的所有内容。如果指定的路径没有扩展名,则ext为空。如果指定路径的前置时间(“。”),它将被忽略。
用法: os.path.splitext(path)
参数:
path:代表文件系统路径的path-like对象。 path-like对象是表示路径的str或bytes对象。
返回类型:此方法返回一个表示指定路径名的根和扩展部分的元组。
11) os.path.getsize()
概述
os.path.getsize(path) 返回文件大小,如果文件不存在就返回错误
以上os.path的模块方法实例展示
import os
print(__file__)
print('---------- os.path模块------------')
print(os.path.isdir('hourly')) # 返回布尔型的布尔值。如果指定的路径是现有目录,则此方法返回True,否则返回False。
print(os.path.isfile('a1.txt')) # 返回布尔型的布尔值。如果指定的路径是现有文件,则此方法返回True,否则返回False。
print(os.path.split('D:/PythonCodes/Test/a1.txt')) # 分割文件名与路径
print(os.path.splitdrive(os.getcwd())) # 返回一个表示给定路径名的驱动器和尾部的元组。
print(os.path.join('Demo', 'test', 'a1.txt')) # 将目录和文件名合成一个路径
print(os.path.exists('hourly')) # 判断路径path是否存在,存在返回True,否则返回False
print(os.path.abspath(__file__)) # 输出绝对路径
print(os.path.basename(__file__)) # 返回文件名
print(os.path.dirname(__file__)) # 返回目录路径
print(os.path.splitext(__file__)) # 返回一个表示指定路径名的根和扩展部分的元组。
print(os.path.getsize(__file__)) # 输出文件大小(字节为单位)
print('---------- os.path模块------------')
执行以上程序输出结果为:
D:\PythonCodes\Test\test.py
---------- os.path模块------------
True
True
('D:/PythonCodes/Test', 'a1.txt')
('D:', '\\PythonCodes\\Test')
Demo\test\a1.txt
True
D:\PythonCodes\Test\test.py
test.py
D:\PythonCodes\Test
('D:\\PythonCodes\\Test\\test', '.py')
1398
---------- os.path模块------------