目录
一、介绍
os模块提供了多数操作系统的功能接口函数。当os模块被导入后,它会自适应于不同的操作系统平台,根据不同的平台进行相应的操作,在python编程时,经常和文件、目录打交道,这时就离不了os模块,本节内容将对os模块提供的函数进行详细的解读
在使用的时候,需要导入该库
import os
二、目录操作
1、获取当前工作目录
os.getcwd()
2、删除目录(空目录)
2.1、删除当前目录
该方法只能删除当前目录。如果目录下还有文件夹或文件,会报错
os.rmdir(path) #传入一个完整的path路径
2.2、递归删除目录
可以删除多层递归的空目录,若目录中有文件则无法删除
os.removedirs(path) #传入一个完整的path路径
3、删除目录(非空目录)
该方法原理即先判断路径对象是否存在,再遍历目录中的文件和子目录,然后删除子目录和文件,最后删除顶层的目录
下面这是对象的删除非空目录的函数方法,可直接调用
def delete_non_empty_directory(path):
try:
# 判断路径是否存在
if not os.path.exists(path):
print(f"目录 {path} 不存在")
return
# 遍历目录中的文件和子目录
for root, dirs, files in os.walk(path, topdown=False):
for file_name in files:
file_path = os.path.join(root, file_name)
# 删除文件
os.remove(file_path)
for dir_name in dirs:
dir_path = os.path.join(root, dir_name)
# 删除子目录
os.rmdir(dir_path)
# 最后删除顶层目录
os.rmdir(path)
print(f"成功删除目录 {path}")
except Exception as e:
print(f"删除目录 {path} 失败:{e}")
4、创建目录
如果文件夹存在时,使用该方法,会报错,所以需要结合exists先进行判断是否存在
os.mkdir(path) #传入一个完整的path路径
5、递归创建目录
os.makedirs(path) #传入一个完整的path路径
6、判断是否为目录
os.path.isdir(path) #传入一个完整的path路径
7、改变当前目录到指定目录
print(os.getcwd())
path='/tmp'
os.chdir(path) #实现改变路径的方法
print(os.getcwd())
/home/kiosk/PycharmProjects/2019python
/tmp
三、文件操作
1、创建文件
如果文件存在时,使用该方法,会报错,所以需要结合exists先进行判断是否存在
os.mknod(path) #传入对应的路径
2、删除文件
os.remove(path) #传入对应的路径
3、文件重命名
os.rename('data.txt','data1.txt')
4、判断是否为文件
os.path.isfile(path) #传入一个完整的path路径
5、获取文件信息
os.path.getatime(path) #返回最近访问时间 (浮点型秒数)
os.path.getctime(path) #返回文件创建时间
os.path.getmtime(path) #返回最近文件修改时间
os.path.getsize(path) #返回文件大小 (字节为单位)
四、其他操作
1、判断路径对象是否存在
该方法返回一个布尔值
os.path.exists(path) #传入一个完整路径对象,判断路径对象是否存在
2、获取路径下所有的文件和目录
该方法只会获取到当前路径的,不会深层次进行遍历。
listpath=os.listdir(path) #传入一个完整路径
3、深层遍历指定路径下的所有子文件夹、文件
深层次遍历指定路径下的所有子文件夹,返回的是一个由路径、文件夹列表、文件列表组成的元组。
可以结合for循环来使用
for path,dirs,files in os.walk(path1): #传入一个完整路径。
print(path)
print(dirs)
print(files)
4、路径拼接
要将文件名加到路径后面,就可以用该方法
path1='D://'
path2='a.txt'
os.path.join(path1,path2) #将两个路径拼接起来
5、路径拆分
5.1、拆分为上级目录+文件名
os.path.split(path) #传入一个完整的path路径,将其拆分为上级目录和文件名部分;
5.2、只获取上级目录
os.path.dirname(path) #传入一个完整的path路径,只获取上级目录;
5.3、只获取文件名
os.path.basename(path) #传入一个完整的path路径,只获取文件名部分;
6、获取操作系统的路径分隔符
os.path.sep
7、判断当前的操作系统
返回操作系统类型 :posix 是linux操作系统,nt 是windows操作系统
print(os.name)
print('Linux' if os.name == 'posix' else 'Windows')
posix
Linux