版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
文件夹的操作制作:课程编写团队出版社:机械工业出版社《Python编程基础与应用》配套课件本课件为《Python编程基础与应用(第2版)》配套教学资源,由编写团队精心打造。为便于教学使用,团队同步提供了丰富的辅助材料,涵盖微课视频、教学课件、实训手册、习题答案、课程标准及程序源代码等。同时,教材配套超星教学示范包,支持一键克隆为网络在线课程,助力高效开展线上线下混合式教学。欢迎联系出版方订购使用。
书名:《Python编程基础与应用(第2版)》出版社:机械工业出版社主编:蓝永健、陈冬冬副主编:蔡德琛、朱海鑫、邓爱玲+contents目录文件夹的路径os和shutil的简介文件夹的创建和删除文件夹和文件的重命名文件夹的复制文件夹的路径01文件夹的路径在操作系统中文件及文件夹的路径可以分为两类表示:绝对路径和相对路径。绝对路径是指从磁盘的根目录(盘符)开始,进行一级一级的目录指向文件。相对路径就是以当前文件为基准进行一级一级的目录指向被引用的资源文件。绝对路径D:\pythonBook\source_dir\hello.txt从盘符开始,逐级指向文件相对路径source_dir\hello.txt以source_dir为基准,hello.txt相对表示方式文件夹的路径对比项绝对路径相对路径定义从根目录(如C:\或/)开始的完整路径,指向文件/文件夹的唯一位置。相对于当前工作目录(脚本运行位置)的路径,不包含根目录。示例(Windows)C:\Users\Alice\project\data.txt.\data.txt(当前目录)或
..\docs\file.txt(上级目录的docs文件夹)示例(Linux/macOS)/home/alice/project/data.txt./data.txt
或
../docs/file.txt优点1.路径唯一,不易混淆。
2.脚本在任何位置运行都能正确找到文件。1.更简洁,便于移植。
2.项目内移动时无需修改路径(保持目录结构不变的情况下)。缺点1.路径长,硬编码后难以移植到其他系统。
2.不同环境(如不同用户)可能需要修改。1.依赖当前工作目录,脚本位置变化可能导致路径失效。
2.路径不唯一,易混淆。适用场景1.需要精准定位系统文件。
2.动态生成路径(如结合os.path.abspath())。1.项目内部文件引用。
2.需要跨平台或团队协作时。Python转换方法os.path.abspath('相对路径')
→转换为绝对路径os.path.relpath('绝对路径')
→转换为相对于当前目录的路径文件夹的路径在python中,可以调用os.path.abspath(path)提取文件或文件夹的绝对路径。在进行命令操作时候会遇到不同操作路径,可以通过os模块中os.getcwd()和os.chdir()进行目录的查看和切换。文件夹的路径importospath1=r"D:\pythonBook\pythonProject9"
#使用r进行字符串转义path2="D:\\pythonBook\\pythonProject9"#使用一个斜杠转义print(os.path.isdir(path1))print(os.path.isdir(path2))print("当前路径:",os.getcwd())os.chdir("D:\pythonBook")#改变路径print("新的当前路径:",os.getcwd())print(os.path.abspath("pythonProject9/test"))#组装一个绝对路径文件夹的路径TrueTrue当前路径:D:\pythonBook\pythonProject9新的当前路径:D:\pythonBookD:\pythonBook\pythonProject9\test它的结果如下:文件夹的路径以上代码在windows操作系统中可以实现,如果是在Linux系统结果会有差别。Path1:"\"为字符串中的特殊字符,加上r后变为原始字符串,则不会对字符串中的"\t"、"\r"进行字符串转义;大小写不影响windows定位到文件,但是会影响linux定位文件;path2:用一个"\"取消第二个"\"的特殊转义作用,即为"\\",也称为双斜杠。os和shutil的简介02文件夹的2个库python中对于文件夹(目录)的操作主要使用到os和shutil模块。在使用前通常要引入库。importshutilimportos文件夹的os库的路径操作函数/方法含义示例os.path.abspath(path)返回路径的绝对路径(基于当前工作目录)。os.path.abspath('data.txt')
→
'/home/user/project/data.txt'os.path.dirname(path)返回路径的目录部分(不包含文件名)。os.path.dirname('/home/user/file.txt')
→
'/home/user'os.path.basename(path)返回路径的文件名部分(包含扩展名)。os.path.basename('/home/user/file.txt')
→
'file.txt'os.path.join(path1,path2)拼接多个路径(自动处理分隔符)。os.path.join('dir','sub','file.txt')
→
'dir/sub/file.txt'os.path.exists(path)检查路径是否存在(文件或目录)。os.path.exists('data.txt')
→
True
或
Falseos.path.isfile(path)检查路径是否为文件。os.path.isfile('data.txt')
→
Trueos.path.isdir(path)检查路径是否为目录。os.path.isdir('docs')
→
Trueos.path.split(path)分割路径为目录和文件名两部分(返回元组)。os.path.split('/home/user/file.txt')
→
('/home/user','file.txt')文件夹的os库的目录操作函数/方法含义示例os.getcwd()返回当前工作目录的绝对路径。os.getcwd()
→
'/home/user/project'os.chdir(path)切换当前工作目录。os.chdir('../docs')os.listdir(path)返回指定目录下的文件和子目录列表(不包含.和..)。os.listdir('.')
→
['file1.txt','subdir']os.mkdir(path)创建单层目录(目录已存在时报错)。os.mkdir('new_dir')os.makedirs(path)递归创建多层目录(自动处理父目录)。os.makedirs('dir1/dir2/dir3')os.rmdir(path)删除空目录(非空时报错)。os.rmdir('empty_dir')os.removedirs(path)递归删除空目录(从子目录向上删除,遇到非空目录停止)。os.removedirs('dir1/dir2')文件夹的os库的文件操作函数/方法含义示例os.rename(src,dst)重命名文件或目录(也可用于移动文件)。os.rename('old.txt','new.txt')os.remove(path)删除文件(目录时报错)。os.remove('file.txt')os.unlink(path)与os.remove()功能相同(删除文件)。os.unlink('file.txt')文件夹的os库的系统信息操作函数/方法含义示例返回操作系统类型('posix'、'nt'等)。
→
'nt'(Windows)或
'posix'(Linux/macOS)os.sep返回操作系统路径分隔符(\或/)。os.sep
→
'\\'(Windows)或
'/'(Linux/macOS)os.environ获取系统环境变量字典。os.environ.get('PATH')
→返回PATH环境变量的值文件夹的os库的进程管理操作函数/方法含义示例os.system(command)执行系统命令(返回命令退出状态)。os.system('ls-l')
→执行ls-l并返回状态码os.startfile(path)用关联程序打开文件(仅Windows)。os.startfile('document.pdf')文件夹的os库的使用注意跨平台兼容性:使用os.path.join()替代硬编码路径分隔符(如/或\)。路径检查:操作前建议用os.path.exists()或os.path.isfile()检查路径有效性。递归删除目录:删除非空目录需使用shutil.rmtree()(需导入shutil模块)。path=os.path.join('dir','subdir','file.txt')#自动适配系统文件夹的shutil库shutil是Python标准库中的高级文件操作模块,专注于批量和递归的文件与目录管理。相比基础的os模块,它提供了更上层的封装,是处理文件系统的核心工具。复制与移动:通过copy()、copytree()、move()实现文件/目录的复制与安全迁移。强力删除:利用rmtree()递归删除目录树,操作不可逆,需谨慎使用。归档与解包:通过make_archive()、unpack_archive()轻松处理压缩包。磁盘监控:调用disk_usage()获取磁盘空间状态。核心优势:高效且跨平台封装底层系统调用,提供简洁一致的接口,屏蔽Windows/macOS/Linux差异,代码易读易维护。关键注意:安全第一操作前务必校验路径;删除/解包建议增加二次确认;覆盖前先备份,避免数据灾难。文件夹的shutil库函数/方法含义示例文件与目录复制shutil.copy(src,dst)复制文件到目标路径(不保留元数据)。shutil.copy('file.txt','backup/file.txt')shutil.copy2(src,dst)复制文件并保留元数据(如修改时间)。shutil.copy2('file.txt','backup/file.txt')shutil.copytree(src,dst)递归复制整个目录树(目标目录必须不存在)。shutil.copytree('data','backup/data')函数/方法含义示例文件与目录移动shutil.move(src,dst)移动文件或目录(可重命名)。shutil.move('old.txt','new_dir/renamed.txt')文件夹的shutil库函数/方法含义示例文件与目录删除shutil.rmtree(path)递归删除目录及其内容(包括非空目录)。shutil.rmtree('temp_dir')函数/方法含义示例磁盘空间管理shutil.disk_usage(path)返回磁盘使用情况(总空间/已用空间/剩余空间,字节为单位)。usage=shutil.disk_usage('/')
print(usage.free/1024**3,"GB")文件夹的shutil库函数/方法含义示例归档与压缩shutil.make_archive(base_name,format,root_dir)创建归档文件(如ZIP/TAR)。shutil.make_archive('backup','zip','data')shutil.unpack_archive(filename,extract_dir)解压归档文件(自动识别格式)。shutil.unpack_archive('backup.zip','extracted')函数/方法含义示例高级文件操作shutil.which(cmd)查找可执行程序的路径(类似which命令)。shutil.which('python')
→
'/usr/bin/python'shutil.chown(path,user,group)修改文件/目录的所有者和组(仅Unix)。shutil.chown('file.txt',user='alice',group='admin')文件夹的shutil库——关键注意事项权限与元数据:copy2会保留文件元数据(如权限、时间戳),而copy不会。跨平台操作时,文件所有者(chown)仅限Unix系统。删除目录:rmtree会强制删除整个目录树,无确认提示,使用时需谨慎!归档格式支持:make_archive支持的格式:zip、tar、gztar(tar.gz)、bztar(tar.bz2)等。解压时无需指定格式(unpack_archive自动检测)。文件夹的shutil库——关键注意事项shutil模块是文件操作的高级工具,适合批量处理、归档等场景,但需注意操作风险(如不可逆删除)。推荐结合try-except处理异常!比如,不可逆操作:删除/移动操作建议先验证路径,结合try-except捕获异常(如FileNotFoundError)importshutiltry:shutil.copytree('src_data','backup')#自动化备份
shutil.make_archive('backup','zip','backup')#生成压缩包backup.zipexceptshutil.Errorase:print(f"操作失败:{e}")文件夹的创建和删除03文件夹的创建和删除文件夹的创建使用到os模块,通过os中mkdir、makedirs分别实现创建单个目录和多级目录。文件夹的删除可以使用两种方式:一种是os.rmdir(),删除目录为空的文件夹,如果不是空目录,执行删除操作会报错;另外一种是shutil.rmtree(),可直接删除文件夹及文件夹内部文件。删除操作功能强大,请谨慎使用。范例:文件夹的创建创建文件夹——创建单层文件夹使用os.mkdir()创建单个文件夹(若父目录不存在会报错),注意:如果文件夹已存在,会抛出FileExistsError。importos#创建单个文件夹os.mkdir("new_folder")#在当前目录下创建new_folderos.mkdir("C:/path/to/new_folder")#绝对路径创建创建文件夹——递归创建多层文件夹使用os.makedirs()自动创建所有需要的父目录。即使部分路径已存在,也不会报错(除非exist_ok=False)。importos#递归创建多层文件夹os.makedirs("parent_folder/child_folder/grandchild_folder")#一次性创建多级目录删除文件夹——
删除空文件夹使用os.rmdir()删除空文件夹(非空时报错):importosos.rmdir("empty_folder")#只能删除空文件夹删除文件夹——
递归删除非空文件夹使用shutil.rmtree()强制删除整个目录树(包括所有子文件和子目录)。数据会直接删除,不可恢复!建议先确认路径。importshutilshutil.rmtree("non_empty_folder")#删除文件夹及其所有内容检查文件夹是否存在importosifos.path.exists("my_folder"):print("文件夹存在")else:print("文件夹不存在")完整示例importosimportshutil#创建文件夹try:os.makedirs("project/data/logs",exist_ok=True)#递归创建,忽略已存在
print("文件夹创建成功")exceptOSErrorase:print(f"创建失败:{e}")#删除文件夹try:shutil.rmtree("project/data")#强制删除data目录及其内容
print("文件夹删除成功")exceptFileNotFoundError:print("文件夹不存在")关键区别总结删除前用os.path.exists()检查路径关键操作使用try-except捕获异常(如权限不足、路径错误等)操作方法特点创建单层目录os.mkdir()父目录必须存在,否则报错创建多层目录os.makedirs()自动创建父目录,支持
exist_ok=True删除空目录os.rmdir()只能删除空文件夹删除非空目录shutil.rmtree()强制删除整个目录树(慎用!)文件夹和文件的重命名04文件夹的重命名文件夹的重命名使用os模块中rename方法如os.rename(old_name,new_name),在操作时需要传递两个参数,前面参数是需要修改的旧文件夹名称,后面参数是修改后的新文件夹名称。importosos.chdir("D:\pythonBook\pythonProject9")#切换到目录print('原目录结构:',os.listdir())os.rename("world","new_world")print(os.getcwd())print('新目录结构:',os.listdir())文件夹和文件的重命名——重命名文件os.rename(src,dst)用于重命名或移动文件/文件夹:src:原路径dst:新路径(如果路径不同,则相当于移动+重名)importos#原文件名:old.txt→新文件名:new.txtos.rename("old.txt","new.txt")#绝对路径示例(跨目录重命名)os.rename("/home/user/old.txt","/home/user/docs/new.txt")文件夹和文件的重命名——重命名文件夹os.rename(src,dst)用于重命名或移动文件/文件夹:src:原路径dst:新路径(如果路径不同,则相当于移动+重名)注意:如果dst已存在,会报错FileExistsError。跨磁盘操作可能失败(需用shutil.move)。importos#原文件夹名:old_dir→新文件夹名:new_diros.rename("old_dir","new_dir")文件夹和文件的重命名——文件/文件夹移动+重命名shutil.move(src,dst)更强大,支持:重命名跨磁盘移动自动处理路径冲突importshutil#将file.txt从当前目录移动到backup目录,并重名为file_backup.txtshutil.move("file.txt","backup/file_backup.txt")#将folder移动到new_location并重命名为new_foldershutil.move("folder","new_location/new_folder")优点:跨磁盘可用(如从C:移动到D:)。如果目标路径是目录,会自动将文件放入该目录。检查文件/文件夹是否存在(避免报错)操作前建议检查路径是否存在:importosifos.path.exists("old.txt"):os.rename("old.txt","new.txt")else:print("文件不存在!")批量重命名文件(结合glob)输出示例:importosimportglob#将所有.txt文件重命名为_new.txtforfileinglob.glob("*.txt"):new_name=file.replace(".txt","_new.txt")os.rename(file,new_name)print(f"重命名:{file}→{new_name}")重命名:a.txt→a_new.txt重命名:b.txt→b_new.txt对比总结方法功能跨磁盘支持覆盖已有文件os.rename()重命名/移动(同磁盘)❌否❌报错shutil.move()重命名/移动(跨磁盘)✅是❌报错常见问题报错FileNotFoundError:检查原路径是否存在,使用os.path.exists()提前验证。报错FileExistsError:目标路径已存在,需先删除旧文件。跨磁盘操作失败:用shutil.move()替代os.rename()。通过os.rename()和shutil.move(),可以轻松管理文件和文件夹的重命名与移动文件夹的复制04文件夹的复制文件夹的复制(拷贝)操作使用到os和shutil模块,在执行中需要配置好原地址和目标地址两个参数。参数:source_path指需要被拷贝文件夹路径;target_path指拷贝的目标地址。shutil.copytree(source_path,target_path)范例复制文件(1)shutil.copy(src,dst)复制文件到目标路径(不保留元数据,如创建时间、权限等):importshutil#将file.txt复制到backup文件夹shutil.copy("file.txt","backup/file.txt")#复制到目标路径并重命名shutil.copy("file.txt","backup/file_backup.txt")复制文件(2)shutil.copy2(src,dst)复制文件并保留元数据(如修改时间、权限等):importshutil#保留文件属性复制shutil.copy2("file.txt","backup/file.txt")适用场景:copy():普通文件备份,不需要保留元数据。copy2():需要保留文件属性(如日志文件的时间戳)。复制文件夹(递归复制所有内容)shutil.copytree(src,dst)递归复制整个目录树(包括子目录和文件)。注意:目标目录必须不存在,否则会报错FileExistsError。支持ignore参数过滤文件(如忽略临时文件)。importshutil#将data文件夹复制到backup/datashutil.copytree("data","backup/data")#复制时忽略特定文件(Python3.8+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 易班专项试题及答案整合
- AOPA无人机驾驶员考前冲刺(配套答案)
- 2026数学二冲刺试卷(含答题卡)
- 自建房外墙真石漆施工协议书 农村房子外墙刷漆包工包料协议
- 《改变沉浮》教案-2026-2027学年湘科版(新版)小学科学五年级上册
- 某纸业厂废品回收操作规范
- 纺织厂染整工艺操作规范
- 某化工制品厂危险品管理制度
- 纺纱厂节能减排办法
- 某塑料厂生产安全守则
- GB 21258-2024燃煤发电机组单位产品能源消耗限额
- 大柳塔煤矿矿山地质环境保护与土地复垦方案
- 呼吸功能锻炼操作评分标准
- 电工作业安全培训
- 学校桌椅采购投标方案
- 全过程工程咨询工作总结报告(全过程咨询)
- 大学毕业论文-克孜尔河引水枢纽工程项目初步设计报告
- 中职单招专业职业技能考试题库畜牧兽医+动物医学+宠物医疗技术+宠物养护与训
- 二年级上册音乐全册教案(湖南文艺出版社)
- 2023年湖南省公民信息管理局招聘笔试备考试题及答案解析
- LY/T 2089-2013自然保护区生态旅游管理评价技术规范
评论
0/150
提交评论