Python批处理:文件操作
一、为什么要使用python处理文件
文件处理管理可分为两种,一种是可视化、手动化,学习成本低,处理数量有限。另一种是编程化、自动化,有一定学习成本,可以基于逻辑处理。计算机的常项是对既定规则的发挥,这个发挥作用于"批量"这个层面。
二、相对路径与绝对路径
相对路径:被操作的文件相对你当前运行的程序来说的路径叫相对路径。

绝对路径:文件在计算机绝对的路径或者说位置叫做绝对路径。

三、python处理文件的常用命令
python文件处理的三个常用库:
import os #查、改
import shutil #复制、剪切
import zipfile #打包、压缩
os的常用方法,path路径系列
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
输出压缩文件的绝对路径
import os
print(os.path.abspath('abc.zip'))
输出结果:

判断一个路径是否是目录
import os
print(os.path.isdir('abc.zip'))
输出结果:

import os
print(os.path.isdir('D:\PythonProject\Python_001\pythonProject'))
输出结果:

判断是否为文件
import os
print(os.path.isfile('abc.zip'))

输出结果:

输出文件名
注意windows下的路径间隔符号刚好是python的转译
import os
print(os.path.basename('D:\\PythonProject\\Python_001\\pythonProject\\abc.zip'))
输出结果:

切分路径与文件名
import os
print(os.path.split('D:\\PythonProject\\Python_001\\pythonProject\\abc.zip'))
输出结果:

连接文件路径
import os
print(os.path.join('D:\\','PythonProject\\Python_001\\pythonProject','abc.zip'))
输出结果:

获取文件大小
import os
print(os.path.getsize('abc.zip')/1024/1024) #B/1024=KB/1024=MB
输出结果:

os常用的方法(读、改、查系列)
os.getcwd() #获取当前工作绝对路径 c:/project/X/
os.listdir(参数) #获取当前路径下所有文件/文件夹
os.remove(参数) #删除文件(注意不是目录)
os.removedirs(参数) #删除多级目录,目录必须要为空(注意!从底层往上层全部删除)
os.rmdir(参数) #删除一个目录,目录必须要为空
os.mkdir/makedirs(参数) #创建一级或多级目录,这里s是多级
获取当前的工作路径
import os
print(os.getcwd())
输出结果:

获取当前路径下所有文件/文件夹
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))

输出结果:

删除文件
import os
path=os.getcwd()
print(path)
os.remove(f'{path}\\tmp\\file200\\1.txt')
输出结果:
删除前:

删除后:

再次删除:

文件不存在,所以报错了
删除目录
import os
path=os.getcwd()
print(path)
os.rmdir(f'{path}\\testdirectory')
rmdir必须删除的是空目录,如果目录非空,会报错误
运行结果:
删除前

删除后:

如果目录非空状态会报错


删除多级目录
import os
path=os.getcwd()
print(path)
os.removedirs('fileremove/2/3/4')

运行结果:

如果存在底层存在平级目录不为空,上级目录不删
创建单级新目录
import os
path=os.getcwd()
print(path)
os.mkdir('myfolder')
运行结果:

运行前:

运行后:

创建多级新目录
import os
path=os.getcwd()
print(path)
os.makedirs('myfolder1//myfolder2//myfolder3')
运行结果:
运行前:

运行后:

shutil下,常用方法(复制、剪切系列)
shutil.rmtree(文件夹) #删除路径下的所有文件、目录,无论是否有文件(特别注意这个跟os.remove rmdir removedirs的区别)
shutil.copytree(源目录,目标目录) #文件夹全量(包含下属所有层次)复制
shutil.copy(源文件,目标文件) #文件复制
shutil.move(源文件夹,目标文件夹) #文件夹/文件剪切
删除文件夹
import shutil
shutil.rmtree('file_shutil_1')
运行结果:
运行前:

运行后:

文件夹全量(包含下属所有层次)复制
import shutil
shutil.copytree('file_shutil_1','new_file_shutil_1')
运行结果:
运行前:

运行后:

全量复制了一份
文件复制
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')
运行结果:
运行前:

运行后:
文件剪切
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完成压缩和解压
压缩文件
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()
程序结果运行如下:

上下文管理器
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)
运行结果如下:
运行前

运行后:

解压文件
import zipfile
# 建立一个压缩写入对象
z=zipfile.ZipFile('abc.zip','r')
for file in z.namelist():
#具体向压缩包写入操作
z.extract(file,"tmp/")
程序结果运行如下:

读取文件内容
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()
运行结果如下:



更换写法
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())
写入文件内容
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'))
运行结果如下:
运行前

运行后

在文件内添加内容
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压缩保存

浙公网安备 33010602011771号