《Python编程基础与应用 第2版》第八章-文件、文件夹的操作_第1页
《Python编程基础与应用 第2版》第八章-文件、文件夹的操作_第2页
《Python编程基础与应用 第2版》第八章-文件、文件夹的操作_第3页
《Python编程基础与应用 第2版》第八章-文件、文件夹的操作_第4页
《Python编程基础与应用 第2版》第八章-文件、文件夹的操作_第5页
已阅读5页,还剩93页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

文件的操作《Python编程基础与应用》配套课件本课件为《Python编程基础与应用(第2版)》配套教学资源,由编写团队精心打造。为便于教学使用,团队同步提供了丰富的辅助材料,涵盖微课视频、教学课件、实训手册、习题答案、课程标准及程序源代码等。同时,教材配套超星教学示范包,支持一键克隆为网络在线课程,助力高效开展线上线下混合式教学。欢迎联系出版方订购使用。

书名:《Python编程基础与应用(第2版)》出版社:机械工业出版社主编:蓝永健、陈冬冬副主编:蔡德琛、朱海鑫、邓爱玲+contents目录文本文件的读取与写入with-open操作二进制文件的读取与写入获取文件属性操作文件处理的常用操作文本文件的读取与写入01文本文件的读取与写入文件被打开后,根据打开方式的不同进行文件的读写操作。对于文本文件的读取操作,可以有以下方式。操作方法含义<file>.read(size=-1)从文件中读取的字节数,默认为-1,如果未给定或为负则读取所有表示读取整个文件。<file>.readline(size=-1)从文件读取整行,包括"\n"字符,如果给出参数,读入该行前size长度的字符串或字节流。<file>.readlines()读取所有行(直到结束符EOF)并返回列表。范例:使用三种方式读取文件内容f=open("hello.txt",encoding="utf-8")print(f.read())#一次性读取文件中所有数据#print(f.read(8))#读取前8个字符的内容,包含\nf.close()#结果如下:#'这是第一行\n这是第二行\n这是第三行\n这是第四行\n这是第五行\n这是第六行'读取文件第一种方式:使用read()一次性读取文件中所有数据。使用read()时候,如果带参数,则可以提取指定数量的内容。范例:使用三种方式读取文件内容f=open("hello.txt",encoding="utf-8")print(f.readline())print(f.readline())print(f.readline())f.close()#结果如下:#'这是第一行\n'#'这是第二行\n'#'这是第三行\n'读取文件第二种方式:readline(),能够实现逐行读取数据。范例:使用三种方式读取文件内容f=open("hello.txt",encoding="utf-8")print(f.readlines())f.close()#结果如下:#['这是第一行\n','这是第二行\n','这是第三行\n','这是第四行\n','这是第五行\n','这是第六行']读取文件第三种方式:readlines(),能够实现逐行读取数据,并将数据以字符串形式保存在一个列表里面。范例:写文件内容f=open("hello.txt",”w”,encoding="utf-8")f.write('2020')f.write(“这是文件写入内容:”)f.write('\n写入换行')f.close()#结果如下:#2020这是文件写入内容:#写入换行范例:追加写文件内容f=open('output.txt','a',encoding='utf-8')f.write("Appendedcontent\n")f.close()安全读写模板——异常处理(重要!)try:f=open('example.txt','r',encoding='utf-8')content=f.read()print(content)exceptFileNotFoundError:print("文件不存在")exceptUnicodeDecodeError:print("编码错误")exceptIOErrorase:print(f"IO错误:{e}")finally:if'f'inlocals():#检查文件对象是否存在

f.close()#确保文件一定被关闭文件指针操作——指定位置读写f=open('example.txt','r+',encoding='utf-8')f.seek(5)#移动指针到第5字节print(f.read(3))#读取3个字符f.seek(0,2)#跳到文件末尾(0表示偏移量,2表示从末尾计算)f.write("\nAppendedatend")f.close()注意事项必须显式调用close()忘记关闭文件会导致资源泄漏可能造成数据没有完全写入磁盘文件打开模式模式描述'r'只读(默认)'w'写入(会覆盖原有内容)'a'追加写入'r+'读写'b'二进制模式(如:'rb')with-open操作02with-open操作

在对文件进行open()操作时候,有时候会遇到文件不存在等情况,程序就会抛出一个IOError的错误,一旦出错,后面的f.close()就不会调用,python引入一种安全的文件操作with语句。withexpression[astarget]:参数说明:expression:是一个需要执行的表达式;target:是一个变量或者元组,存储的是Expression:表达式执行返回的结果,可选参数。范例为什么用with……open操作在Python中,使用withopen(...)asfile:语句操作文件是一种上下文管理器(ContextManager)的用法,它通过自动管理资源(如文件句柄)来提升代码的健壮性和可读性。为什么用with……open操作1.自动关闭文件,避免资源泄漏问题:手动调用file.close()时,若在open和close之间发生异常(如代码错误、程序中断),文件可能无法正常关闭,导致资源泄漏。解决:with语句会在代码块执行完毕后自动调用file.close(),即使发生异常也会确保文件关闭。#手动关闭(有风险)file=open("data.txt","r")try:data=file.read()finally:file.close()#必须显式调用,否则可能泄漏#使用with(推荐)withopen("data.txt","r")asfile:data=file.read()#无需手动关闭,with自动处理为什么用with……open操作2.代码简洁性与可读性问题:传统的try-finally模式需要额外代码块,逻辑分散。解决:with将资源管理逻辑封装在上下文中,代码更紧凑、意图更清晰。3.异常处理的天然支持问题:手动处理异常时,需在finally中重复关闭操作。解决:with语句内部已集成异常处理机制,确保无论是否发生异常,资源都会被正确释放。为什么用with……open操作4.上下文管理器的扩展性原理:with语句通过实现__enter__和__exit__方法工作,可自定义上下文管理器(如管理数据库连接、网络套接字等)。示例:自定义上下文管理器classMyContextManager:def__enter__(self):print("获取资源")returnself

def__exit__(self,exc_type,exc_val,exc_tb):print("释放资源")withMyContextManager()ascm:print("正在操作资源...")为什么用with……open操作5.适用场景文件操作:读写文件时优先使用with。数据库连接:如withsqlite3.connect("db.sqlite")asconn:。线程锁:如withthreading.Lock():。举例——CSV文件处理importcsv#写入CSVwithopen('data.csv','w',newline='')asf:writer=csv.writer(f)writer.writerow(['Name','Age'])writer.writerow(['Alice',25])#读取CSVwithopen('data.csv','r')asf:reader=csv.reader(f)forrowinreader:print(row)举例——JSON文件处理importjson#写入JSONdata={'name':'Alice','age':25}withopen('data.json','w')asf:json.dump(data,f,indent=4)#读取JSONwithopen('data.json','r')asf:loaded=json.load(f)print(loaded['name'])#输出:Alice二进制文件的读取与写入03二进制文件的读取与写入在处理图片、音频、视频等非文本数据时,Python必须启用二进制模式。使用open()函数时,需在模式参数中加入字母'b',如'rb'或'wb',以确保数据完整性。rb·只读模式以二进制格式打开文件用于只读,文件指针默认位于文件开头。是读取图片、视频等静态资源时最常用的安全模式。wb·写入模式以二进制格式打开文件用于写入。若文件已存在会清空原有内容后重新写入;若不存在则自动创建。ab·追加模式以二进制格式打开文件用于追加写入。文件指针自动定位到末尾,新数据追加到原内容之后,不会破坏已有信息。常见应用场景:图片上传下载、音视频剪辑、可执行程序打包、数据库文件备份,以及网络编程中socket数据传输等。范例:读取图片文件并把图片另存为操作示例:打开二进制文件(打开图片文件)withopen("example.jpg","rb")asfile:#读取二进制模式

data=file.read()示例:读取二进制数据——分块读取大文件chunk_size=1024#每次读取1KBwithopen("large_video.mp4","rb")asfile:whileTrue:chunk=file.read(chunk_size)ifnotchunk:break#处理chunk(如上传到云存储)read(size):读取指定字节数,若省略则读取全部内容。readinto(buffer):高效读取到预分配的缓冲区(如bytearray)。示例:写入二进制数据withopen("source.zip","rb")assrc,open("copy.zip","wb")asdst:dst.write(src.read())#一次性读写(适合小文件)write(bytes_data):写入字节数据,需确保输入为bytes或bytearray类型示例:追加二进制数据log_entry=b"\x0A\x0DNewlogentry"#二进制格式的日志withopen("app.log","ab")asfile:file.write(log_entry)使用'ab'模式在文件末尾追加内容。实际应用示例——图片文件复制defcopy_binary_file(src,dst):withopen(src,'rb')asf_src,open(dst,'wb')asf_dst:whileTrue:chunk=f_src.read(4096)#每次读取4KBifnotchunk:breakf_dst.write(chunk)copy_binary_file('original.jpg','copy.jpg')获取文件属性操作04获取文件属性操作python使用os.stat()获取相关文件的系统状态信息,即可以获取文件的属性。语法如下:st_modeinode保护模式st_inoinode节点号。st_devinode驻留的设备。st_nlinkinode的链接数。st_uid所有者的用户ID。st_gid所有者的组ID。st_size普通文件以字节为单位的大小;包含等待某些特殊文件的数据。st_atime上次访问的时间。st_mtime最后一次修改的时间。st_ctime由操作系统报告的”ctime”。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间。os.stat(path)#path参数为指定的路径范例举例——基本用法importos#获取文件状态信息file_path="example.txt"stat_info=os.stat(file_path)#打印所有属性(返回的是一个命名元组)print(stat_info)os.stat_result(st_mode=33206,st_ino=12345678,st_dev=16777220,st_nlink=1,st_uid=501,st_gid=20,st_size=1024,st_atime=1620000000,st_mtime=1620000000,st_ctime=1620000000)输出示例:举例——使用os.stat()获取文件状态importosstat_info=os.stat('example.txt')print(f"文件大小:{stat_info.st_size}字节")#文件大小print(f"最后修改时间:{stat_info.st_mtime}")#时间戳格式举例——时间戳转可读格式importosfromdatetimeimportdatetimefile_path="example.txt"stat_info=os.stat(file_path)#转换最后修改时间mtime=stat_info.st_mtimereadable_time=datetime.fromtimestamp(mtime).strftime("%Y-%m-%d%H:%M:%S")print(f"最后修改时间:{readable_time}")举例——结合stat模块解析权限importosimportstatfile_path="example.txt"stat_info=os.stat(file_path)#判断文件类型ifstat.S_ISREG(stat_info.st_mode):print("这是普通文件")elifstat.S_ISDIR(stat_info.st_mode):print("这是目录")#获取权限数字(如0o644)permissions=stat_info.st_modeprint(f"权限数字:{oct(permissions)}")#检查用户是否有写权限ifpermissions&stat.S_IWUSR:print("用户有写权限")完整案例:文件信息检查工具importosimportstatfromdatetimeimportdatetimedefcheck_file_info(path):try:stat_info=os.stat(path)print(f"路径:{path}")print(f"大小:{stat_info.st_size}字节")print(f"最后修改时间:{datetime.fromtimestamp(stat_info.st_mtime)}")

#解析文件类型

ifstat.S_ISREG(stat_info.st_mode):file_type="普通文件"elifstat.S_ISDIR(stat_info.st_mode):file_type="目录"else:file_type="其他类型"print(f"类型:{file_type}")

#检查权限

permissions=oct(stat_info.st_mode)[-3:]print(f"权限:{permissions}(octal)")

exceptFileNotFoundError:print("错误:文件不存在")check_file_info("example.txt")文件处理的常用操作05获取文件属性操作在进行文件操作时候,除了能够对文件进行读写以外,还需要掌握文件的重命名、复制、删除以及移动等常用操作,使用标准库有os、shutil。操作描述操作描述os.remove()删除当前文件shutil.unlink()删除当前文件os.rename()重命名文件shutil.move()移动文件shutil.copy()复制文件shutil.make_archive()创建压缩文件shutil.unpack_archive()解压缩文件os.stat(path)获取文件属性举例:文件处理的常用操作importosimportshutil#检查该文件是否存在file_path="hello.txt"ifos.path.isfile(file_path):print(f'File{file_path}exists.')else:print(f'File{file_path}doesnotexist.')#复制文件hello.txt为hello_copy.txtshutil.copy("hello.txt","hello_copy.txt")#将文件hello.txt重命名为hello_rename.txtos.rename('hello_copy.txt','hello_rename.txt’)#删除文件hello_rename.txtos.remove('hello_rename.txt')本案例中对文件重命名后,又删除了文件,看起来文件没有变化,其实经过了多次的操作。它的结果为:Filehello.txtexists.感谢聆听制作:教材编写团队出版社:机械工业出版社《Python编程基础与应用》配套课件文件夹的操作制作:课程编写团队出版社:机械工业出版社《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()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论