Python教程

Python遍历文件夹中的压缩文件自动解压缩到其目录下

本文主要是介绍Python遍历文件夹中的压缩文件自动解压缩到其目录下,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、问题?
  • 二、使用步骤
    • 采用Python
    • 2.执行
  • 总结


前言

本文适合Python初学者,介绍Python遍历文件夹,自动创建文件夹、调用7z命令来解压缩文件、删除压缩文件


一、问题?

个人的移动硬盘中有100多GB,差不多1千多个压缩文件,分散在不同目录层级中。目标:
1.遍历指定文件夹下所有目录及文件;
2.发现压缩文件(zip格式);
3.创建与压缩文件同名的文件夹,执行解压缩操作;
4.解压缩成功后,删除压缩文件;

尝试用批处理命令或者bash脚本来,但都不能达成以上全部要求。百度和Google看了一下,在Stackoverflow里有类似的帖子,纯命令行方式有困难。转而考虑用python来实现。

二、使用步骤

采用Python

Python代码如下(示例):

import os
import sys
import subprocess

if len(sys.argv) < 2:
    sys.exit("Please specify the dirctory ...")
    
read_path = sys.argv[1]
print('Try to unzip archives recursively under the director ' + read_path)
for root, dirs, files in os.walk(read_path):
    for name in files:
        if name.endswith('.zip'): 
            file_name = os.path.splitext(name)[0]           
            unzippath = os.path.join(root,file_name)
            
            # 创建目录
            if not os.path.exists(unzippath):
                os.mkdir(unzippath)
                print("Create directory:" + unzippath)
            
            # 解压缩文件
            cmdline = '7z x -y -o' + '"' + unzippath + '" "' + os.path.join(root,name) + '"'
            print("Unzip:" + cmdline)
            sub = subprocess.Popen(cmdline,shell=True,stdout=subprocess.PIPE)
            sub.wait()
                       
            # 删除已解压缩的文件
            cmdline = 'del /Q ' + '"' + os.path.join(root,name) + '"'
            print("Delete:" + cmdline)
            sub = subprocess.Popen(cmdline,shell=True,stdout=subprocess.PIPE)
            sub.wait()
        
        

2.执行

在Windows命令行下运行:

c>python unzip.py G:\files

注意这里使用的是7z.exe来执行解压缩,确保7z.exe的目录已添加到Windows的Path变量中。


总结

相比较其他脚本语言或高级语言的实现,python的实现简洁。代码执行主要操作时间都花费在7z的解压缩操作中,python调用7z的进程开销不显著,相应地就不需要过多考虑性能的优化。

这篇关于Python遍历文件夹中的压缩文件自动解压缩到其目录下的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!