python文件和文件夹的操作
我们对文件和文件夹经常会做一些操作,python 的os和shutil模块,可以实现很多的文件和目录的操作。
引入import os
。
os可以实现简单的文件夹和文件操作。
shutil可以实现复杂的文件操作,比如对文件的拷贝和复制。
引入import shutil
.
判断路径或文件
os.path.isabs(...) # 是否是绝对路径
os.path.exists(...) # 判断是否真实存在
os.path.isdir(...) # 判断是否是个目录
os.path.isfile(...) #判断是否是个文件
- 使用示例
if not os.path.exists(restore_path):
os.makedirs(restore_path)
判断是否存在,不存在时,则创建这个文件夹。
合并路径
os.path.join(path1,path2)
这样可以处理了不同操作系统的路径分隔符。比如linux下,返回path1/path2.windows下返回path1\path2.
路径名、文件名分隔
os.path.split(...) # 分隔目录和文件名/文件夹名
os.path.splitdrive(...) # 分隔盘符(windows系统)
os.path.splitext(..) #分隔文件和扩展名
不要求目录或文件真实存在,只对字符串进行操作。
工作目录及创建文件夹操作
os.getcwd() #获取当前工作目录
os.chdir(...) #改变工作目录
os.listdir(...) #列出目录下的文件
os.mkdir(...) #创建单个目录
os.makedirs(...) #创建多级目录
创建出错的原因有:1.path已存在2.驱动器不存在3.磁盘已满4 磁盘是只读的或者没有写权限
删除文件夹、文件
os.rmdir(...) #只能删除空文件夹,如需删除文件夹及其下的文件,需用shutil
os.remove(...) #删除单一文件
shutil.rmtree(...) #删除文件夹及其下所有文件
- 使用示例
os.remove(project_zip)
file=os.path.join(upload_path,zip_name.split('.')[0])
if os.path.exists(file):
shutil.rmtree(file)
产生异常的可能原因: (1) 路径不存在 (2) 路径子目录中有文件或下级子目录(os.rmdir) (3) 没有操作权限或只读
重命名文件夹/文件
os.rename(oldname,newname)
异常原因:1.oldname不存在 2.newname已存在
复制、移动文件夹或文件
shutil.copyfile("old","new") #复制文件,只能是文件
shutile.copytree('old','new') #复制文件夹,都只能是目录,且new不存在
shutile.copy('old','new') #复制文件/文件夹,复制 old 为 new(new是文件,若不存在,即新建),复制 old 为至 new 文件夹(文件夹已存在)
shutil.move('old','new') #移动文件/文件夹至new
- 使用示例
if not os.path.exists(db_folder):
os.makedirs(db_folder)
shutil.copy(os.path.join(db_prefolder,dbname),os.path.join(db_folder,dbname))