用python压缩文件,python 压缩文件夹

  用python压缩文件,python 压缩文件夹

  本文主要介绍使用Python批量解压和压缩文件夹的示例代码。文中详细解释了实现步骤。感兴趣的朋友可以和边肖一起尝试一下。

  00-1010一、python批量解压二。python批量压缩

  

目录

  提示:如果是重要数据,请在解压前备份,解压后会覆盖原压缩文件!

  解压前:

  解压后:的文件名是英文的:

  文件名包含中文:

  代码如下

  导入操作系统

  导入技能

  导入zip文件

  #首先介绍所需的工具包。

  # shutil是以后移动文件所必需的,因此您可以忽略此项。

  #在此更改路径!

  #parent_path=r 输入路径,该路径下的所有zip文件都将被解压缩

  parent _ path=r e : \ py \ python 3.7 \ test \ test 99 \ zip

  #文件类型选择

  #可以自己更改压缩文件类型,需要引入其他工具包,比如tarfile。

  #这是因为zip在你自己的windows上很常见。其他类型请自己改。

  File_flag=。zip #修改要解压缩的格式,例如:压缩包

  #删除解压缩后的zip文件

  #不建议第一次使用。确认程序正确后再添加即可。

  def del_old_zip(文件路径):

  os.remove(文件路径)

  #解压

  def解压缩(文件路径,根目录):

  #开始

  # zipfile打开zip文件

  z=zipfile。zip file(f“{ file _ path }”,“r”)

  #解压

  z . extract all(path=f“{ root }”)# path是解压路径,解包后位于此路径下。

  #确定是否需要反复拆包。

  对于z.namelist():中的名称

  if names . ends with(file _ flag):

  关闭()

  返回1

  #结束

  关闭()

  返回0

  #因为我发现有些邮编在使用过程中拆包后会搞混。

  #平时手动解压时,也可能会遇到是否覆盖提示的问题。

  #以下两个函数解决了这个问题

  #首先创建一个与压缩包同名的大文件夹。

  #避免以后的混乱和麻烦

  def start_dir_make(根,目录名):

  os.chdir(根)

  os.mkdir(目录名)

  返回os.path.join(根目录,目录名)

  #删除多余的文件夹

  def rem_dir_extra(根,父目录名):

  #递归要注意信息的正常处理。可能上一次调用改变了什么,下一次调用还是用以前的数据。

  尝试:

  #开始判断文件夹名称重复。

  对于os.listdir(os.path.join(root,father_dir_name)):中的项目

  #第一步是确定它是否是一个文件夹,如果不是,跳过这个循环。

  如果不是OS . path . isdir(OS . path . join(root,father_dir_name,item)):

  继续

  #确定是否脱层目录结构。

  #文件夹名称应该相同,子目录中只有一个文件夹。

  如果item==father_dir_name和len(

  os.listdir(os.path.join(root,father_dir_name)))==1:

  #更改工作目录

  os.chdir(根)

  #重命名无用文件夹,因为直接移动会出现重名错误。

  os.rename(父目录名,父目录名

  + -old)

   # 移动文件后删除空文件夹

   shutil.move(os.path.join(root, father_dir_name + -old, item), os.path.join(root))

   os.rmdir(os.path.join(root, father_dir_name + -old))

   # 将去掉一层目录结构后的文件夹继续作为父本递归处理下去

   # 这里要注意,上面已经发生过数据的改动,所以下面递归传参一定要正确!

   rem_dir_extra(root, item)

   else:

   # 处理那些不满足上面条件的文件夹

   rem_dir_extra(os.path.join(root, father_dir_name), item)

   except Exception as e:

   # 打印错误信息

   print("清除文件夹出错" + str(e))

  # 入口

  if __name__ == __main__:

   flag = 1

   while flag:

   # 循环遍历文件夹

   for root, dirs, files in os.walk(parent_path):

   # 读取文件名

   for name in files:

   if name.endswith(file_flag):

   # 创建文件夹

   new_ws = start_dir_make(root, name.replace(file_flag, ))

   # zip文件地址

   zip_path = os.path.join(root, name)

   # 解压

   flag = decompress(zip_path, new_ws)

   # 删除解压后的文件

   # 有点危险

   # 但不删除又可能会重复运行

   # 一定要备份或先测试,不然可能会凉,自己选择修改

   del_old_zip(zip_path)

   # 去掉多余的文件结构

   rem_dir_extra(root, name.replace(file_flag, ))

   print(f{root}\\{name}.join([文件:, \n解压完成\n]))

   # 由于解压可能解了好几次 所以可能会有已经解压好的父级目录重名无法处理 这里要再处理一次

   rem_dir_extra(os.path.split(parent_path)[0], os.path.split(parent_path)[1])

   print("解压完成啦,记得检查有没有zip格式之外的呀!\n\n其他格式需要自己改一下了")

  

  

二、python批量压缩

  压缩前:

  

  压缩后:

  

  代码如下:

  

import zipfile

  import os

  def zip_yasuo(start_dir):

   file_news = start_dir + .zip

   if not os.path.isfile(file_news):

   z = zipfile.ZipFile(file_news, w, zipfile.ZIP_DEFLATED)

   for dir_path, dir_names, file_names in os.walk(start_dir):

   file_path = dir_path.replace(start_dir, )

   file_path = file_path and file_path + os.sep or

   for filename in file_names:

   z.write(os.path.join(dir_path, filename), file_path+filename)

   z.close()

  if __name__ == "__main__":

   base_path = r"E:\py\python3.7\test\test99\zip"

   base_path_list = os.listdir(base_path)

   for base_path_list_one in base_path_list:

   base_path_list_one_dir = os.path.join(base_path,base_path_list_one)

   # 子目录

   print("准备压缩需要压缩的子目录", base_path_list_one_dir)

   if os.path.isdir(base_path_list_one_dir):

   zip_yasuo(base_path_list_one_dir)

  到此这篇关于Python批量解压&压缩文件夹的示例代码的文章就介绍到这了,更多相关Python解压 压缩文件夹内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windows下cmd中切换路径与目录查看,cmd怎么切换路径到文件夹
  • windows下cmd中切换路径与目录查看,cmd怎么切换路径到文件夹,cmd命令打开及切换目录路径的实现
  • wget下载文件到指定目录,wget下载整个文件夹
  • wget下载文件到指定目录,wget下载整个文件夹,wget下载整个网站(整个子目录)或特定目录
  • u盘exe病毒如何根除,如何根除U盘文件夹exe病毒
  • u盘exe病毒如何根除,如何根除U盘文件夹exe病毒,U.EXE病毒删除方法
  • svn在eclipse中的使用,eclipse不显示svn路径,Eclipse设置svn忽略文件或文件夹(svn-ignore)的操作
  • Linux系统删除文件夹命令,linux系统中删除文件的命令
  • Linux系统删除文件夹命令,linux系统中删除文件的命令,Linux系统删除文件夹和文件的命令
  • jsp 上传文件夹,jsp多文件上传
  • jsp 上传文件夹,jsp多文件上传,JSP组件commons-fileupload实现文件上传
  • dos 删除文件夹命令,dos 删除文件夹 目录不是空的
  • dos 删除文件夹命令,dos 删除文件夹 目录不是空的,dos 删除文件夹 rd
  • Win10共享文件夹怎么设置访问密码,win10共享文件夹设置密码后没有权限访问
  • win10用户的文件名怎么改,window10怎样更改用户文件夹名称
  • 留言与评论(共有 条评论)
       
    验证码: