Python批处理:文件操作
一、为什么要使用python处理文件
文件处理管理可分为两种,一种是可视化、手动化,学习成本低,处理数量有限。另一种是编程化、自动化,有一定学习成本,可以基于逻辑处理。计算机的常项是对既定规则的发挥,这个发挥作用于"批量"这个层面。
二、相对路径与绝对路径
相对路径:被操作的文件相对你当前运行的程序来说的路径叫相对路径。
绝对路径:文件在计算机绝对的路径或者说位置叫做绝对路径。
三、python处理文件的常用命令
python文件处理的三个常用库:
1 2 3 | import os #查、改 import shutil #复制、剪切 import zipfile #打包、压缩 |
os的常用方法,path路径系列
1 2 3 4 5 6 7 | os.path.abspath(参数) #获取当前文件的绝对路径 c:/project/X/XXX.txt os.path.isdir(参数) #获取当前路径文件是否为文件夹-布尔 os.path.isfile(参数) #获取当前路径文件是否为文件-布尔 os.path.basename(参数) #获取当前路径的结尾名字 c:/project/xxx.txt os.path.split(参数) #以路径文件名切分列表['c:/project/','xxx.txt'] os.path.join(参数) #(‘aa’,'bb','x.txt')aa/bb/x.txt os.path.getsize(参数) #以字节单位(B)返回当前文件大小换算KB除以1024 换算MB再除以1024 |
输出压缩文件的绝对路径
1 2 3 | import os print (os.path.abspath( 'abc.zip' )) |
输出结果:
判断一个路径是否是目录
1 2 3 | import os print (os.path.isdir( 'abc.zip' )) |
输出结果:
1 2 3 | import os print (os.path.isdir( 'D:\PythonProject\Python_001\pythonProject' )) |
输出结果:
判断是否为文件
1 2 3 | import os print (os.path.isfile( 'abc.zip' )) |
输出结果:
输出文件名
注意windows下的路径间隔符号刚好是python的转译
1 2 3 | import os print (os.path.basename( 'D:\\PythonProject\\Python_001\\pythonProject\\abc.zip' )) |
输出结果:
切分路径与文件名
1 2 3 | import os print (os.path.split( 'D:\\PythonProject\\Python_001\\pythonProject\\abc.zip' )) |
输出结果:
连接文件路径
1 2 3 | import os print (os.path.join( 'D:\\',' PythonProject\\Python_001\\pythonProject ',' abc. zip ')) |
输出结果:
获取文件大小
1 2 3 | import os print (os.path.getsize( 'abc.zip' ) / 1024 / 1024 ) #B/1024=KB/1024=MB |
输出结果:
os常用的方法(读、改、查系列)
1 2 3 4 5 6 | os.getcwd() #获取当前工作绝对路径 c:/project/X/ os.listdir(参数) #获取当前路径下所有文件/文件夹 os.remove(参数) #删除文件(注意不是目录) os.removedirs(参数) #删除多级目录,目录必须要为空(注意!从底层往上层全部删除) os.rmdir(参数) #删除一个目录,目录必须要为空 os.mkdir / makedirs(参数) #创建一级或多级目录,这里s是多级 |
获取当前的工作路径
1 2 3 | import os print (os.getcwd()) |
输出结果:
获取当前路径下所有文件/文件夹
1 2 3 4 5 6 7 8 9 10 11 12 13 | import os pwd = os.getcwd() abs_path = os.path.abspath( 'tmp\\file200' ) print (abs_path) for f in os.listdir(abs_path): print (f) files = os.getcwd() + "\\" + f print (files) print (os.path.isdir(files)) if os.path.isdir(files) = = True : for file in os.listdir(files): print (os.path.isdir( file )) |
输出结果:
删除文件
1 2 3 4 5 | import os path = os.getcwd() print (path) os.remove(f '{path}\\tmp\\file200\\1.txt' ) |
输出结果:
删除前:
删除后:
再次删除:
文件不存在,所以报错了
删除目录
1 2 3 4 5 | import os path = os.getcwd() print (path) os.rmdir(f '{path}\\testdirectory' ) |
1 | rmdir必须删除的是空目录,如果目录非空,会报错误运行结果:删除前 |
删除后:
如果目录非空状态会报错
删除多级目录
1 2 3 4 5 | import os path = os.getcwd() print (path) os.removedirs( 'fileremove/2/3/4' ) |
运行结果:
如果存在底层存在平级目录不为空,上级目录不删
创建单级新目录
1 2 3 4 5 | import os path = os.getcwd() print (path) os.mkdir( 'myfolder' ) |
运行结果:
运行前:
运行后:
创建多级新目录
1 2 3 4 5 | import os path = os.getcwd() print (path) os.makedirs( 'myfolder1//myfolder2//myfolder3' ) |
运行结果:
运行前:
运行后:
shutil下,常用方法(复制、剪切系列)
1 2 3 4 | shutil.rmtree(文件夹) #删除路径下的所有文件、目录,无论是否有文件(特别注意这个跟os.remove rmdir removedirs的区别) shutil.copytree(源目录,目标目录) #文件夹全量(包含下属所有层次)复制 shutil.copy(源文件,目标文件) #文件复制 shutil.move(源文件夹,目标文件夹) #文件夹/文件剪切 |
删除文件夹
1 2 3 | import shutil shutil.rmtree( 'file_shutil_1' ) |
运行结果:
运行前:
运行后:
文件夹全量(包含下属所有层次)复制
1 2 3 | import shutil shutil.copytree( 'file_shutil_1' , 'new_file_shutil_1' ) |
运行结果:
运行前:
运行后:
全量复制了一份
文件复制
1 2 3 | import shutil shutil.copy( 'D:/PythonProject/Python_001/pythonProject/file_shutil_1/3/2/1/1.txt' , 'D:/PythonProject/Python_001/pythonProject/file_shutil_1/3/2/1/2.txt' ) |
运行结果:
运行前:
运行后:
文件剪切
1 2 3 | import shutil shutil.move( 'D:/PythonProject/Python_001/pythonProject/file_shutil_1/3/2/1/1.txt' , 'D:/PythonProject/Python_001/pythonProject/new_file_shutil_1/3/2/1/1.txt' ) |
运行结果:
运行前:
运行后:
使用zipfile完成压缩和解压
压缩文件
1 2 3 4 5 6 7 8 9 | import os import zipfile # 建立一个压缩写入对象 z = zipfile.ZipFile( 'abc.zip' , 'w' ) # 遍历目录,然后文件一个一个写入对象,zip文件 for x in os.listdir( 'file200' ): #具体向压缩包写入操作 z.write( 'file200' + os.sep + x) z.close() |
程序结果运行如下:
上下文管理器
1 2 3 4 5 6 | import os import zipfile with zipfile.ZipFile( 'abc.zip' , 'w' ) as w: for x in os.listdir( 'file_shutil_1' ): w.write( 'file_shutil_1' + os.sep + x) |
运行结果如下:
运行前
运行后:
解压文件
1 2 3 4 5 6 7 | import zipfile # 建立一个压缩写入对象 z = zipfile.ZipFile( 'abc.zip' , 'r' ) for file in z.namelist(): #具体向压缩包写入操作 z.extract( file , "tmp/" ) |
程序结果运行如下:
读取文件内容
1 2 3 4 5 | import os txt = open ( 'D:/PythonProject/Python_001/pythonProject/new_file_shutil_1/3/2/1/1.txt' , mode = 'r' ,encoding = 'utf-8' ) print (txt.readlines()) txt.close() |
运行结果如下:
更换写法
1 2 3 4 | import os with open ( 'D:/PythonProject/Python_001/pythonProject/new_file_shutil_1/3/2/1/1.txt' , mode = 'r' ,encoding = 'utf-8' ) as r: print (r.readlines()) |
写入文件内容
1 2 3 4 | import os with open ( 'D:/PythonProject/Python_001/pythonProject/new_file_shutil_1/3/2/1/1.txt' , 'w' ) as w: print (w.write( 'Helloworld' )) |
运行结果如下:
运行前
运行后
在文件内添加内容
1 2 3 4 | import os with open ( 'D:/PythonProject/Python_001/pythonProject/new_file_shutil_1/3/2/1/1.txt' , 'a' ,encoding = 'utf-8' ) as add: print (add.write( 'Helloworld' )) |
运行结果如下:
运行前:
运行后:
用Python清理你的大文件
过程描述
从电脑找出你的大文件,然后放在一个文件夹下,然后进行压缩保存
要求:
1、使用os shutil和zipfile完成该任务
2、要求对文件进行判断,大于100MB(兆)
3、满足文件大小,然后复制文件到统一目录下
4、把该目录下的文件进行zip压缩保存
分类:
python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)