欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于python開發(fā)文件常見處理工具

 更新時(shí)間:2025年06月30日 08:54:10   作者:岫珩  
這篇文章主要為大家詳細(xì)介紹了如何使用python開發(fā)一個(gè)文件處理工具,包含文件讀寫,后綴獲取,壓縮和解壓,文件夾遍歷等操作,需要的可以了解下

1. 直接食用代碼

1.1 讀文件

讀取文件中內(nèi)容

# 讀取文件內(nèi)容 file_path: 文件路徑
def read_file(file_path):
    # 打開文件
    with open(file_path, 'r', encoding='utf-8') as f:
        # 讀取文件內(nèi)容
        content = f.read()
        # 返回文件內(nèi)容
        return content

1.2 寫文件

將內(nèi)容寫到文件中

# 將內(nèi)容寫入文件 file_path: 文件路徑, content: 文件內(nèi)容
def write_file(file_path, content):
    # 創(chuàng)建文件
    with open(file_path, 'w', encoding='utf-8') as f:
        # 寫入內(nèi)容
        f.write(content)
        # 關(guān)閉文件
        f.close()

1.3 獲取文件后綴

判斷文件是否為壓縮文件

import os
# 判斷文件是否為壓縮文件 file_path 文件路徑
def is_pack(file_path):
    # 獲取文件擴(kuò)展名
    ext = os.path.splitext(file_path)[1].lower()
    # 判斷文件擴(kuò)展名
    if ext in ['.zip', '.rar', '.7z']:
        # 是壓縮文件則返回True
        return True

1.4 打包文件(壓縮)

壓縮文件

import os
import zipfile
# 將指定文件夾打包為 zip 文件 folder_path: 待壓縮文件夾路徑, output_path: 壓縮文件保存路徑
def zip_folder(folder_path, output_path):
    # folder_path: 要打包的文件夾路徑
    # output_path: 輸出的 zip 文件路徑
    # 創(chuàng)建 zip 文件
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zip_file:
        # 遍歷文件夾
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                # 獲取文件絕對(duì)路徑
                file_path = os.path.join(root, file)
                # 獲取文件在zip文件中的相對(duì)路徑
                reletive_path = os.path.relpath(file_path, folder_path)
                # 添加文件到zip文件中
                zip_file.write(file_path, os.path.relpath(file_path, folder_path))

1.5 解壓

解壓縮文件

import subprocess
import os
import zipfile
# 解壓縮文件 filepath: 壓縮文件路徑, target_folder: 解壓目標(biāo)路徑
def unpack(filepath, target_folder):

    # 以上注釋代碼的整合 目的為了獲取壓縮包文件名(不帶后綴)
    file_name_pre = os.path.splitext(os.path.basename(filepath))[0]
    print("filepath----> ",filepath)
    print("file_name_pre----> ",file_name_pre)
    print("target_folder----> ",target_folder)
    # target_folder = os.path.join(target_folder, file_name_pre)

    # 本地winrar命令集成
    command = [
            # 本地WinRAR.exe文件路徑
            'C:\\Program Files\\WinRAR\\WinRAR.exe',
            # 解壓并保留完整目錄結(jié)構(gòu)
            'x',           
            # 傳入源RAR文件的絕對(duì)路徑(引號(hào)包裹,防止路徑中有空格)
            os.path.abspath(filepath),
            # 目標(biāo)目錄(確保路徑以一個(gè)反斜杠結(jié)束,否則WinRAR會(huì)出錯(cuò)),如果該參數(shù)省略,則會(huì)默認(rèn)為當(dāng)前目錄
            target_folder.rstrip('\\') + '\\',
            # 覆蓋已存在的文件
            '-o+',         
            # 將壓縮包名稱作為子目錄添加到目標(biāo)路徑中,如果添加該參數(shù),則壓縮包名稱會(huì)作為子目錄添加到目標(biāo)路徑中,產(chǎn)生兩層一樣的目錄
            # '-ad',
            # 后臺(tái)運(yùn)行
            # '-ibck',       
            # 自動(dòng)確認(rèn)所有提示
            '-y'           
        ]
    
    print("正在執(zhí)行命令:", " ".join(command))

    # 運(yùn)行命令 subprocess本身會(huì)處理空格問題
    result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

    print("命令執(zhí)行完畢")
    # 因?yàn)榻鈮汉蟮哪夸浭亲幽夸洠手付夸洖榻鈮汉蟮哪夸洠?即文件均在下面這個(gè)文件目錄中
    target_folder = target_folder+"\\"+file_name_pre
    print('target_folder2:',target_folder)

1.6 遍歷文件夾

獲取文件夾中所有文件列表

import os
# 遍歷文件夾,獲取文件夾下所有文件列表 folder_path: 文件夾路徑
def iteration_folder(folder_path):
    
    # 獲取目標(biāo)目錄下的所有文件路徑
    # 定義一個(gè)空列表,用于存儲(chǔ)所有文件路徑
    file_list = []
    # 遍歷指定目錄下的所有文件和子目錄
    for root, dirs, files in os.walk(folder_path):
        # 遍歷文件
        for file in files:
            print('file---> ',file)
            # 獲取文件路徑
            file_path = os.path.join(root, file)

            # 將文件路徑添加到列表中
            file_list.append(file_path)
    print('----------> file_list:',file_list)

    # 返回文件列表
    return file_list

2. 完整詳解代碼及示例演示

2.1 完整代碼

file_utils.py

# python 工具 判斷是否為壓縮文件、讀取文件、寫文件、解壓縮、遍歷獲取文件夾下所有文件


# 所需引入的庫(kù)
import subprocess
import os
import zipfile

# 讀取文件內(nèi)容 file_path: 文件路徑
def read_file(file_path):
    # 打開文件
    with open(file_path, 'r', encoding='utf-8') as f:
        # 讀取文件內(nèi)容
        content = f.read()
        # 返回文件內(nèi)容
        return content


# 將內(nèi)容寫入文件 file_path: 文件路徑, content: 文件內(nèi)容
def write_file(file_path, content):
    # 創(chuàng)建文件
    with open(file_path, 'w', encoding='utf-8') as f:
        # 寫入內(nèi)容
        f.write(content)
        # 關(guān)閉文件
        f.close()


# 判斷文件是否為壓縮文件 file_path 文件路徑
def is_pack(file_path):
    # 獲取文件擴(kuò)展名
    ext = os.path.splitext(file_path)[1].lower()
    # 判斷文件擴(kuò)展名
    if ext in ['.zip', '.rar', '.7z']:
        # 是壓縮文件則返回True
        return True



# 將指定文件夾打包為 zip 文件 folder_path: 待壓縮文件夾路徑, output_path: 壓縮文件保存路徑
def zip_folder(folder_path, output_path):
    # folder_path: 要打包的文件夾路徑
    # output_path: 輸出的 zip 文件路徑
    # 創(chuàng)建 zip 文件
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zip_file:
        # 遍歷文件夾
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                # 獲取文件絕對(duì)路徑
                file_path = os.path.join(root, file)
                # 獲取文件在zip文件中的相對(duì)路徑
                reletive_path = os.path.relpath(file_path, folder_path)
                # 添加文件到zip文件中
                zip_file.write(file_path, os.path.relpath(file_path, folder_path))


# 解壓縮文件 filepath: 壓縮文件路徑, target_folder: 解壓目標(biāo)路徑
def unpack(filepath, target_folder):

    # 以上注釋代碼的整合 目的為了獲取壓縮包文件名(不帶后綴)
    file_name_pre = os.path.splitext(os.path.basename(filepath))[0]
    print("filepath----> ",filepath)
    print("file_name_pre----> ",file_name_pre)
    print("target_folder----> ",target_folder)
    # target_folder = os.path.join(target_folder, file_name_pre)

    # 本地winrar命令集成
    command = [
            # 本地WinRAR.exe文件路徑
            'C:\\Program Files\\WinRAR\\WinRAR.exe',
            # 解壓并保留完整目錄結(jié)構(gòu)
            'x',           
            # 傳入源RAR文件的絕對(duì)路徑(引號(hào)包裹,防止路徑中有空格)
            os.path.abspath(filepath),
            # 目標(biāo)目錄(確保路徑以一個(gè)反斜杠結(jié)束,否則WinRAR會(huì)出錯(cuò)),如果該參數(shù)省略,則會(huì)默認(rèn)為當(dāng)前目錄
            target_folder.rstrip('\\') + '\\',
            # 覆蓋已存在的文件
            '-o+',         
            # 將壓縮包名稱作為子目錄添加到目標(biāo)路徑中,如果添加該參數(shù),則壓縮包名稱會(huì)作為子目錄添加到目標(biāo)路徑中,產(chǎn)生兩層一樣的目錄
            # '-ad',
            # 后臺(tái)運(yùn)行
            # '-ibck',       
            # 自動(dòng)確認(rèn)所有提示
            '-y'           
        ]
    
    print("正在執(zhí)行命令:", " ".join(command))

    # 運(yùn)行命令 subprocess本身會(huì)處理空格問題
    result = subprocess.run(command, check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)

    print("命令執(zhí)行完畢")
    # 因?yàn)榻鈮汉蟮哪夸浭亲幽夸?,故指定目錄為解壓后的目錄?即文件均在下面這個(gè)文件目錄中
    target_folder = target_folder+"\\"+file_name_pre
    print('target_folder2:',target_folder)

# 遍歷文件夾,獲取文件夾下所有文件列表 folder_path: 文件夾路徑
def iteration_folder(folder_path):
    
    # 獲取目標(biāo)目錄下的所有文件路徑
    # 定義一個(gè)空列表,用于存儲(chǔ)所有文件路徑
    file_list = []
    # 遍歷指定目錄下的所有文件和子目錄
    for root, dirs, files in os.walk(folder_path):
        # 遍歷文件
        for file in files:
            print('file---> ',file)
            # 獲取文件路徑
            file_path = os.path.join(root, file)

            # 將文件路徑添加到列表中
            file_list.append(file_path)
    print('----------> file_list:',file_list)

    # 返回文件列表
    return file_list





if __name__ == '__main__':

    # 1. 讀取文件內(nèi)容
    print("<--------文件讀取測(cè)試--------> ")
    content = read_file(r'D:\重載\TEST2ZIP\TEST2ZIP\test1.txt')
    print("content----> ",content)
    # 2. 寫入文件內(nèi)容
    write_file(r'D:\重載\TEST2ZIP\TEST2ZIP\test4.txt',content)


    # 3. 檢測(cè)文件是否為壓縮文件
    print("<--------判斷類型是否為壓縮包--------> ")
    is_zip1 = is_pack(r'D:\重載\TEST2ZIP\TEST2ZIP\test1.txt')
    print('----------> is_zip1:',is_zip1)
    is_zip2 = is_pack(r'D:\重載\TEST2ZIP\TEST2ZIP.rar')
    print('----------> is_zip2:',is_zip2)
    # 特殊測(cè)試,該文件不存在,同樣可以得到結(jié)果
    is_zip3 = is_pack(r'D:\重載\TEST2ZIP\TEST2ZIP\test1.zip')
    print('----------> is_zip3:',is_zip3)


    # 4. 解壓縮文件
    print("<--------判斷類型是否為壓縮包--------> ")
    unpack(r'D:\重載\TEST2ZIP\TEST2ZIP.rar', r'D:\重載\TEST2ZIP\rar_test')

    # 5. 壓縮文件
    # print("<--------判斷類型是否為壓縮包--------> ")

    # 6. 獲取指定目錄下的所有文件
    # print("<--------判斷類型是否為壓縮包--------> ")

2.2 示例演示

2.2.1 讀文件

執(zhí)行代碼,輸出讀取結(jié)果

如圖

2.2.2 寫文件

執(zhí)行代碼,查看結(jié)果

指定位置查看是否生成文件

2.2.3 獲取文件后綴

判斷文件是否為壓縮包

執(zhí)行代碼,查看結(jié)果

2.2.4 解壓文件

執(zhí)行代碼,查看指定目錄是否有解壓后的文件

結(jié)果如下

注意,這里解壓縮后的目錄是子目錄,即指定目錄下會(huì)生成一個(gè)子目錄存放文件

2.2.5 壓縮文件

執(zhí)行代碼查看結(jié)果

如圖壓縮文件生成

2.2.6 遍歷文件夾

獲取文件夾中所有文件的列表

執(zhí)行代碼,查看結(jié)果

對(duì)比文件夾目錄中的文件

到此這篇關(guān)于基于python開發(fā)文件常見處理工具的文章就介紹到這了,更多相關(guān)python文件處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論