描述
该模块提供了一种使用操作系统相关功能的可移植方式。
指导文献
链接:os — Miscellaneous operating system interfaces — Python 3.7.13 documentation
使用规则
os为一个模块,如果需要使用该模块中的方法,需要先进行导入,如下所示:
import os
模块内置方法(V3.7)
用途:获得当前工作目录,即当前python脚本工作的目录路径。
返回值:返回代表当前工作目录的字符串。
例:
>>> import os
>>> print(os.getcwd())
E:\pythonProject\learning\day3 #输出结果为当前工作目录
用途:改变当前工作目录到指定的路径
返回值:无。
????????其中,
????????参数path -- 要改变的新路径,可以始终指定为字符串。
例:
>>> import os
>>> print(os.getcwd())
E:\pythonProject\learning\day3 #输出结果为当前工作目录
>>> os.chdir("test") #改变到当前目录的test目录下
>>> print(os.getcwd())
E:\pythonProject\learning\day3\test #输出结果为改变后的当前工作目录
>>> os.chdir("..") #返回上一层目录
>>> print(os.getcwd())
E:\pythonProject\learning\day3 #输出结果为当前工作目录
用途:递归目录创建功能。 与 mkdir() 类似,但使所有需要包含叶目录的中间级目录。
返回值:无。
????????其中,
????????参数name -- 需要递归创建的目录,可以是相对或者绝对路径。
????????参数mode -- 权限模式
????????参数exist_ok -- 如果值为False,如果创建的name存在,则会抛出FileExistsError 。
例:
>>> import os
# 第一次创建文件夹
>>> os.makedirs("test\osTest") #在该文件的所属文件夹中新增test\osTest文件夹
# 第二次创建同样的文件夹
>>> os.makedirs("test\osTest") #由于第一次文件夹已经创建,但说exist_ok参数默认为Flase,则抛出异常
Traceback (most recent call last):
?File "<pyshell#3>", line 1, in <module>
? ?os.makedirs("test\osTest")
?File "E:/pythonProject/learning/day3/os模块.py, line 221, in makedirs
? ?mkdir(name, mode)
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'test\\osTest'
>>> os.makedirs("test\osTest", exist_ok = True) #不会抛出异常
>>>
用途:以数字权限模式创建目录。
返回值:无。
????????其中,
????????参数path -- 如果创建的name存在,则会抛出FileExistsError 。
????????参数mode -- 权限模式
????????参数dir_fd -- 如果dir_fd不是None,它应该是一个打开目录的文件描述符,路径应该是相对的。
例:
>>> import os
>>> os.mkdir("temp") #第一次创建temp目录
>>> os.mkdir("temp") #第二次创建temp目录,已存在,则抛出异常
Traceback (most recent call last):
?File "E:/pythonProject/learning/day3/os模块.py", line 4, in <module>
? ?os.mkdir("temp")
FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'temp'
用途:递归删除目录。如果子文件夹被成功删除,会尝试删除路径中提到的每个父目录,直到抛出一个错误(其基本被忽略,因为它通常意味着父目录不为空)。例:os.removedirs('foo/bar/baz')将首先删除目录'foo/bar/baz',如果父目录'foo/bar'和父目录'foo'也为空,则删除父目录'foo/bar' 和父目录'foo',否则不删除。 如果无法成功删除目录'foo/bar/baz',则引发 OSError。
返回值:无。
????????其中,
????????参数name -- 要删除的目录路径。
例:
>>> import os
>>> os.makedirs("foo\\bar\\baz") #创建目录
>>> os.removedirs("foo\\bar") #删除bar文件夹,但说bar文件夹中有baz文件夹,因此抛出OSError异常
Traceback (most recent call last):
?File "E:/pythonProject/learning/day3/os模块.py", line 5, in <module>
? ?os.removedirs("foo\\bar")
?File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\os.py", line 239, in removedirs
? ?rmdir(name)
OSError: [WinError 145] 目录不是空的。: 'foo\\bar'
>>> os.removedirs("foo\\bar\\baz") #成功删除文件夹baz,由于文件夹baz的父文件夹foo\bar和父文件夹foo中都为空,因此将父文件夹foo\bar和父文件夹foo也一并删除。
>>>
用途:删除单级目录路径。 如果目录不存在或不为空,则分别引发 FileNotFoundError 或 OSError。
返回值:无。
????????其中,
????????参数path -- 要删除的目录路径。
例:
>>> import os
>>> os.makedirs("foo\\bar\\baz") #创建目录
>>> os.rmdir("foo\\bar") #删除bar文件夹,但说bar文件夹中有baz文件夹,因此抛出OSError异常
Traceback (most recent call last):
?File "E:/pythonProject/learning/day3/os模块.py", line 6, in <module>
? ?os.rmdir("foo\\bar")
OSError: [WinError 145] 目录不是空的。: 'foo\\bar'
>>> os.rmdir("foo\\baz") #删除不存在的目录
Traceback (most recent call last):
?File "E:/pythonProject/learning/day3/os模块.py", line 6, in <module>
? ?os.rmdir("foo\\baz")
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'foo\\baz'
>>> os.rmdir("foo\\bar\\baz") #删除bar文件夹,文件夹baz的父文件夹foo\bar和父文件夹foo中虽然都为空,但是也不会删除。
用途:获取包含路径给定目录中所有文件条目(包括文件或文件夹)的名称。
返回值:包含路径给定目录中所有文件条目的名称的列表,该列表按任意顺序排列,不包括特殊条目“.” 和 “..”,即使它们存在于目录中。
????????其中,
????????参数path -- 需要列出的目录路径,其可指定为str或bytes。如果路径是字节,返回的文件名也将是字节; 在所有其他情况下,返回的文件名将是 str。如果 path 为 None,则使用 path='.'。
例:
>>> import os
>>> os.makedirs("foo\\bar\\baz") #创建目录
>>> os.mkdir("foo\\bar\\test") #创建目录
>>> dirList = os.listdir("foo\\bar") #通过上述的创建目录,可得知文件夹foo\bar中存在文件夹baz和文件夹test
>>> print(dirList)
['baz', 'test']
用途:删除指定路径的文件。如果指定的路径是一个目录,将抛出PermissionError。如果路径错误,将抛出FileNotFoundError。
返回值:无。
????????其中,
????????参数path -- 要移除的文件路径。
例:
>>> import os
>>> dirList = os.listdir("foo\\bar")
>>> print(dirList)
['baz', 'temp.txt', 'test']
>>> os.remove("foo\\bar") #删除文件夹时,抛出异常
Traceback (most recent call last):
?File "E:/pythonProject/learning/day3/os模块.py", line 10, in <module>
? ?os.remove("foo\\bar\\baz")
PermissionError: [WinError 5] 拒绝访问。: 'foo\\bar\\baz'
>>> os.remove("foo\\bar\\temp") #删除错误路径,从上可得知,temp是一个文件,系统找不到该文件,则抛出异常。
Traceback (most recent call last):
?File "E:/pythonProject/learning/day3/os模块.py", line 10, in <module>
? ?os.remove("foo\\bar\\temp")
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'foo\\bar\\temp'
>>> os.remove("foo\\bar\\temp.txt") #删除正确路径的文件
>>> print(os.listdir("foo\\bar"))
['baz', 'test'] ?#删除成功
用途:重命名文件或目录。如果要修改的目录名路径错误,将抛出FileNotFoundError。
返回值:无。
????????其中,
????????参数src -- 要修改的目录名。
????????参数dst -- 修改后的目录名。
例:
>>> import os
>>> print(os.listdir("foo\\bar")) #列出路径下已有文件或文件夹
['baz', 'temp.txt', 'test'] #已有文件和文件夹
>>> os.rename("foo\\bar\\test1", "foo\\bar\\test") #原路径不存在,抛出异常
Traceback (most recent call last):
?File "E:/pythonProject/learning/day3/os模块.py", line 9, in <module>
? ?os.rename("foo\\bar\\test1", "foo\\bar\\test")
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'foo\\bar\\test1' -> 'foo\\bar\\test'
>>> os.rename("foo\\bar\\test", "foo\\bar\\test1") #将test修改为test1
>>> print(os.listdir("foo\\bar")) #列出路径下已有文件或文件夹
['baz', 'temp.txt', 'test1'] #test成功修改为test1
>>> os.rename("foo\\bar\\temp.txt", "foo\\bar\\temp1.txt") #修改文件temp.txt为temp1.txt
>>> print(os.listdir("foo\\bar"))
['baz', 'temp1.txt', 'test1'] #修改成功
用途:在给定的路径上执行一个系统 stat 的调用
返回值:stat_result(st_mode: 保护模式, st_ino:索引节点, st_dev:驻留的设备, st_nlink:链接数, st_uid:所有者的用户ID, st_gid:所有者的组ID, st_size:普通文件以字节为单位的大小;包含等待某些特殊文件的数据, st_atime:上次访问的时间, st_mtime:最后一次修改的时间, st_ctime:由操作系统报告的"ctime",在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
????????其中,
????????参数path -- 给定的路径,其可以是字符串、字节、类路径对象或打开文件描述符int。
例:
>>> import os
>>> print(os.stat(""os模块.py""))
os.stat_result(st_mode=33206, st_ino=5348024557598908, st_dev=18467, st_nlink=1, st_uid=0, st_gid=0, st_size=438, st_atime=1649159528, st_mtime=1649159528, st_ctime=1649075190) ?#输出结果
用途:拆分路径名。
返回值:返回元组 (head, tail),其中tail是最后一个斜线之后的所有内容。
????????其中,
????????参数path -- 给定拆分的路径。
例:
>>> import os
>>> print(os.path.split(r"E:\pythonProject\learning\day3\os模块.py"))
('E:\\pythonProject\\learning\\day3', 'os模块.py') #输出结果,其中head = 'E:\\pythonProject\\learning\\day3',tail = 'os模块.py',即:tail是最后一个斜线之后的所有内容
>>> print(os.path.split(r"E:\pythonProject\learning\day3"))
('E:\\pythonProject\\learning', 'day3') #输出结果,其中head = 'E:\\pythonProject\\learning,tail = 'day3',即:tail是最后一个斜线之后的所有内容
用途:获得文件路径。
返回值:返回文件路径,即os.path.split(path)所返回的head部分。
????????其中,
????????参数path -- 文件路径。
例:
>>> import os
>>> print(os.path.split(r"E:\pythonProject\learning\day3\os模块.py"))
('E:\\pythonProject\\learning\\day3', 'os模块.py') #输出结果
>>> print(os.path.dirname(r"E:\pythonProject\learning\day3\os模块.py"))
E:\pythonProject\learning\day3 #输出结果
用途:获得文件名。
返回值:返回文件名,即os.path.split(path)所返回的tail部分。
????????其中,
????????参数path -- 文件路径。
例:
>>> import os
>>> print(os.path.split(r"E:\pythonProject\learning\day3\os模块.py"))
('E:\\pythonProject\\learning\\day3', 'os模块.py') #输出结果
>>> print(os.path.basename(r"E:\pythonProject\learning\day3\os模块.py"))
os模块.py #输出结果
用途:合并两个或多个路径。
返回值:返回合并路径。
????????其中,
????????参数path1 -- 需要合并的路径。
????????参数path2 -- 需要合并的路径。
例:
>>> import os
>>> head, middle, tail = "E:\pythonProject", "learning", "day3\os模块.py"
>>> print(os.path.join(head, middle, tail))
E:\pythonProject\learning\day3\os模块.py #输出结果
用途:检测路径是否存在。
返回值:如果路径存在,则返回True,否则返回False。
????????其中,
????????参数path -- 需要检测的路径。
例:
>>> import os
>>> path = os.getcwd()
>>> print(os.path.exists(path))
True #输出结果
|