最全面的文件操作-python

本文详细介绍了Python在Linux环境下对文件的操作,包括压缩与解压(zip、tar格式)、遍历、移动、删除及清理空文件夹等实用技巧,是Python文件操作的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python操作文件

压缩方式

gz: 即gzip。通常仅仅能压缩一个文件。与tar结合起来就能够实现先打包,再压缩。

tar: linux系统下的打包工具。仅仅打包。不压缩

tgz:即tar.gz。先用tar打包,然后再用gz压缩得到的文件

zip: 不同于gzip。尽管使用相似的算法,能够打包压缩多个文件。只是分别压缩文件。压缩率低于tar。

rar:打包压缩文件。最初用于DOS,基于window操作系统。

压缩率比zip高,但速度慢。随机访问的速度也慢。

一、python解压文件

import os
import tarfile
import zipfile
import rarfile

def uncompress(src_file, dest_dir):
    """解压各种类型的压缩包

    :param src_file: 你要解压的压缩包文件
    :type src_file: file
    :param dest_dir: 你要解压到的目标路径
    :type dest_dir: str
    """

    file_name, file_type = os.path.splitext(src_file)

    try:
        if file_type == '.zip':
            # 需要安装zip包:pip install zipp
            zip_file = zipfile.ZipFile(src_file)
            for names in zip_file.namelist():
                print(names)
                zip_file.extract(names, dest_dir)
            zip_file.close()

        elif file_type == '.rar':
            # 需要安装rar包:pip install rarfile
            rar = rarfile.RarFile(src_file)
            os.chdir(dest_dir)
            rar.extractall()
            rar.close()

        else:
            # file_type == '.tgz' or file_type == '.tar' or file_type == '.gz'
            # Python自带tarfile模块
            tar = tarfile.open(fileobj=src_file)
            for name in tar.getnames():
                tar.extract(name, dest_dir)
            tar.close()

    except Exception as e:
        _ = e
        return False
    return True

二、python压缩文件

2.1、zip

def zip_files(files, zip_name):
    """
    压缩文件
    :param files: 待压缩文件
    :param zip_name: 压缩文件名及路径
    :return:
    """
    zip_ = zipfile.ZipFile(zip_name, 'w', zipfile.ZIP_DEFLATED)
    zip_.write(files)
    zip_.close()

2.2、tar

import tarfile
import os
import time


def tar(path, file_name):
    """
    tar压缩文件
    :param path: 待压缩文件路径
    :param file_name: 压缩后的文件路径名
    :return: 
    """
    tar_resource = tarfile.open(file_name, 'w')
    for root, dir, files in os.walk(path):
        for file in files:
            full_path = os.path.join(root, file)
            tar_resource.add(full_path, arcname=file)
    tar_resource.close()

三、操作文件

3.1、遍历文件

		import os
    for root, dirs, files in os.walk(r'path'):

3.2、移动文件

import shutil
shutil.move(old_path, new_path)

3.3、删除文件夹

import shutil
shutil.rmtree(root)

3.4、清理空文件夹和空文件

# -*- coding: utf-8 -*-
import os  # 引入文件操作库
 
def deldir(path):
    """
    清理空文件夹和空文件
    param path: 文件路径,检查此文件路径下的子文件
    """
    try:
        files = os.listdir(path)  # 获取路径下的子文件(夹)列表
        print (files)
        for file in files:
            print ('遍历路径:'+os.fspath(path +'/'+ file))
            if os.path.isdir(os.fspath(path+'/'+file)):  # 如果是文件夹
                print (file+'是文件夹')
                if not os.listdir(os.fspath(path+'/'+file)):  # 如果子文件为空
                    print (file+'是空文件夹,即将执行删除操作')
                    os.rmdir(os.fspath(path+'/'+file))  # 删除这个空文件夹
                else:
                    print (file+'不是空文件夹')
                    deldir(os.fspath(path+'/'+file)) # 遍历子文件
                    if not os.listdir(os.fspath(path+'/'+file)):  # 如果子文件为空
                        print (file+'是空文件夹,即将执行删除操作')
                        os.rmdir(os.fspath(path+'/'+file))  # 删除这个空文件夹  
            elif os.path.isfile(os.fspath(path+'/'+file)):  # 如果是文件
                print(file+'是文件')
                if os.path.getsize(os.fspath(path+'/'+file)) == 0:  # 文件大小为0
                    print (file+'是空文件,即将执行删除操作!')
                    os.remove(os.fspath(path+'/'+file))  # 删除这个文件
        return
    except FileNotFoundError:
        print ("文件夹路径错误")

3.5、复制文件

import shutil
shutil.copy(old_path, new_path)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值