zipfile模块笔记补充
问题
现在有这样的需求
- 要求从一个目录下,找到所有的特定后缀的文件
- 并将他们,移动到一个文件夹,或者压缩
- 无论这些文件,在当前目录下那个位置
思路
和昨天的问题类似,但是稍有区别 不需要压缩所有的文件夹,只需要压缩,包含有特定后缀文件的文件夹就行 所以会比昨天的代码少一些
实现思路
TODO: 导入sys,os, zipfile
#!python3
#find_py.py - 查找当前文件夹下的.py文件,并压缩打包
import sys, os
import zipfile
TODO: 采用函数式编程,先写好程序入口函数(main),和处理文件的函数名(find_py)
def find_py():
pass
def main():
pass
if __name__ == '__main__':
main()
TODO: main()程序入口 –> 获取用户输入的路径,转化为绝对路径后,传入处理函数
def main():
#获取命令行输入的脚本名称,操作目录
scripts, path_of_folder = sys.argv
#显示当前目录
print("当前脚本:" + scripts)
#命令传入findPy()函数
abs_folder = os.path.abspath(path_of_folder)
findPy(abs_folder)
#结束
print("[!] 完成")
TODO:完善find_py()函数,测试运行
def find_py():
#TODO:检查备份文件夹中,有没有同名文件夹,有的话N+1
number = 1
while True:
backFileName = "back_py_" + str(number) + ".zip"
if not os.path.exists(backFileName):
break
number += 1
#TODO:打开一个压缩文件
with zipfile.ZipFile(backFileName,'w') as backupFile:
#TODO:遍历文件夹,找到所有后缀为.py的文件,添加到压缩文件中
for foldername, subfolder, filename in os.walk(folder):
print("正在搜寻/压缩.py文件 %s ..." % (foldername)) #添加文件夹到压缩文件,纯粹添加文件夹s
for pyFile in filename:
if pyFile.endswith('.py'):
backupFile.write(os.path.join(foldername, pyFile)) #添加文件,要添加其所在路径
整理
#!python3
#find_py.py - 查找当前文件夹下的.py文件,并压缩打包
import sys, os
import zipfile
def findPy(folder):
#TODO:检查备份文件夹中,有没有同名文件夹,有的话N+1
number = 1
while True:
backFileName = "back_py_" + str(number) + ".zip"
if not os.path.exists(backFileName):
break
number += 1
#TODO:打开一个压缩文件
with zipfile.ZipFile(backFileName,'w') as backupFile:
#TODO:遍历文件夹,找到所有后缀为.py的文件,添加到压缩文件中
for foldername, subfolder, filename in os.walk(folder):
print("正在搜寻/压缩.py文件 %s ..." % (foldername)) #添加文件夹到压缩文件,纯粹添加文件夹
for pyFile in filename:
if pyFile.endswith('.py'):
backupFile.write(os.path.join(foldername, pyFile))
return None
def main():
#TODO:获取命令行输入的脚本名称,操作目录
scripts, path_of_folder = sys.argv
#TODO:显示当前目录
print("当前脚本:" + scripts)
#TODO:路径转化为绝对路径后,传入findPy()函数
abs_folder = os.path.abspath(path_of_folder)
findPy(abs_folder)
print("[!] 完成")
if __name__ == '__main__':
main()
总结
写入文件时,一定要记得带上它的路径