自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用 Python 進行文件管理的四個聰明方法

開發(fā)
本文介紹了如何利用 Python 進行批量文件管理,包括重命名文件、按類型移動文件、批量壓縮文件以及解壓縮文件等操作。

本文將介紹如何使用 Python 進行文件管理和自動化處理,包括批量重命名文件、按類型移動文件、批量壓縮文件以及解壓縮文件等常見任務。通過具體的代碼示例,讀者可以快速上手并應用于實際項目中。

方法一:自動重命名文件

有時候,我們需要批量重命名文件,比如整理照片或文檔時。Python 的 os 模塊提供了許多文件操作的功能,包括重命名。

步驟:

  • 導入 os 模塊
  • 獲取文件列表。
  • 為每個文件生成新名字。
  • 重命名文件。

代碼示例:

import os

def rename_files(directory, prefix="new_"):
    """
    批量重命名指定目錄下的所有文件。
    
    :param directory: 目標目錄路徑
    :param prefix: 新文件名前綴,默認為 'new_'
    """
    # 獲取目錄下所有文件
    files = os.listdir(directory)
    
    # 遍歷每個文件
    for filename in files:
        # 跳過隱藏文件(以 . 開頭)
        if not filename.startswith('.'):
            # 構建完整文件路徑
            old_path = os.path.join(directory, filename)
            new_name = prefix + filename
            new_path = os.path.join(directory, new_name)
            
            # 重命名文件
            os.rename(old_path, new_path)
            print(f"Renamed '{filename}' to '{new_name}'")

# 測試函數
directory_path = "path/to/your/directory"
rename_files(directory_path)

輸出:

Renamed 'old_file.txt' to 'new_old_file.txt'
Renamed 'image.jpg' to 'new_image.jpg'
...

解釋:

  • os.listdir() 返回指定目錄下的文件列表。
  • os.path.join() 用于構建完整的文件路徑。
  • os.rename() 用于重命名文件。

方法二:自動移動文件

當你的文件夾里有很多不同類型的文件時,可能需要將它們按類型分類存放。

步驟:

  • 定義目標文件夾。
  • 創(chuàng)建目標文件夾(如果不存在)。
  • 移動文件到目標文件夾。

代碼示例:

import os
import shutil

def move_files_by_type(directory):
    """
    根據文件類型移動文件到不同的文件夾。
    
    :param directory: 目標目錄路徑
    """
    # 文件類型及其對應的文件夾
    file_types = {
        '.txt': 'TextFiles',
        '.jpg': 'Images',
        '.mp3': 'Music',
        '.mp4': 'Videos',
        '.pdf': 'Documents'
    }
    
    # 獲取目錄下所有文件
    files = os.listdir(directory)
    
    # 遍歷每個文件
    for filename in files:
        # 獲取文件擴展名
        extension = os.path.splitext(filename)[1]
        
        # 如果是已知類型
        if extension in file_types:
            target_folder = file_types[extension]
            
            # 創(chuàng)建目標文件夾(如果不存在)
            target_dir = os.path.join(directory, target_folder)
            if not os.path.exists(target_dir):
                os.makedirs(target_dir)
                
            # 構建源文件路徑和目標文件路徑
            source_path = os.path.join(directory, filename)
            target_path = os.path.join(target_dir, filename)
            
            # 移動文件
            shutil.move(source_path, target_path)
            print(f"Moved '{filename}' to '{target_folder}'")
        else:
            print(f"Ignored '{filename}' (unknown type)")

# 測試函數
directory_path = "path/to/your/directory"
move_files_by_type(directory_path)

輸出:

Moved 'document.pdf' to 'Documents'
Moved 'image.jpg' to 'Images'
Moved 'song.mp3' to 'Music'
...

解釋:

  • os.path.splitext() 用于獲取文件擴展名。
  • shutil.move() 用于移動文件。
  • os.makedirs() 用于創(chuàng)建多級目錄。

方法三:批量壓縮文件

有時你需要將多個文件打包成一個壓縮文件,以便發(fā)送或存儲。Python 的 zipfile 模塊可以幫助你輕松實現這一功能。

步驟:

  • 導入 zipfile 模塊。
  • 創(chuàng)建一個新的壓縮文件。
  • 將指定目錄下的文件添加到壓縮文件中。

代碼示例:

import os
import zipfile

def zip_files(directory, output_zip="archive.zip"):
    """
    將指定目錄下的所有文件壓縮到一個 ZIP 文件中。
    
    :param directory: 目標目錄路徑
    :param output_zip: 輸出的 ZIP 文件名,默認為 'archive.zip'
    """
    # 創(chuàng)建一個新的 ZIP 文件
    with zipfile.ZipFile(output_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
        # 獲取目錄下所有文件
        files = os.listdir(directory)
        
        # 遍歷每個文件
        for filename in files:
            # 跳過隱藏文件(以 . 開頭)
            if not filename.startswith('.'):
                # 構建完整文件路徑
                file_path = os.path.join(directory, filename)
                
                # 添加文件到 ZIP 文件
                zipf.write(file_path, arcname=filename)
                print(f"Added '{filename}' to '{output_zip}'")

# 測試函數
directory_path = "path/to/your/directory"
zip_files(directory_path)

輸出:

Added 'document.pdf' to 'archive.zip'
Added 'image.jpg' to 'archive.zip'
Added 'song.mp3' to 'archive.zip'
...

解釋:

  • zipfile.ZipFile() 用于創(chuàng)建一個新的 ZIP 文件。
  • zipf.write() 用于將文件添加到 ZIP 文件中。
  • arcname 參數用于指定文件在 ZIP 文件中的名稱。

方法四:自動解壓縮文件

與壓縮文件相對應,解壓縮文件同樣重要。你可以使用 zipfile 模塊來解壓 ZIP 文件。

步驟:

  • 導入 zipfile 模塊。
  • 打開 ZIP 文件。
  • 解壓文件到指定目錄。

代碼示例:

import os
import zipfile

def unzip_files(zip_file, output_directory="unzipped"):
    """
    解壓指定的 ZIP 文件到指定目錄。
    
    :param zip_file: ZIP 文件路徑
    :param output_directory: 輸出目錄,默認為 'unzipped'
    """
    # 創(chuàng)建輸出目錄(如果不存在)
    if not os.path.exists(output_directory):
        os.makedirs(output_directory)
    
    # 打開 ZIP 文件
    with zipfile.ZipFile(zip_file, 'r') as zipf:
        # 解壓所有文件到指定目錄
        zipf.extractall(output_directory)
        print(f"Extracted all files from '{zip_file}' to '{output_directory}'")

# 測試函數
zip_file_path = "path/to/your/archive.zip"
unzip_files(zip_file_path)

輸出:

Extracted all files from 'archive.zip' to 'unzipped'

解釋:

  • zipfile.ZipFile() 用于打開 ZIP 文件。
  • zipf.extractall() 用于解壓所有文件到指定目錄。

實戰(zhàn)案例分析:自動化文件管理腳本

假設你有一個文件夾 Documents,里面包含了大量的 PDF 文檔、圖片和其他文件。你希望:

  • 重命名所有 PDF 文件,前綴為 new_。
  • 將所有 PDF 文件移動到 PDF_Docs 文件夾。
  • 將所有圖片(.jpg, .png)移動到 Images 文件夾。
  • 將剩余文件壓縮成一個 ZIP 文件。

代碼示例:

import os
import shutil
import zipfile

def manage_files(directory):
    """
    自動化文件管理腳本。
    
    :param directory: 目標目錄路徑
    """
    # 1. 重命名所有 PDF 文件
    pdf_files = [f for f in os.listdir(directory) if f.endswith('.pdf')]
    for filename in pdf_files:
        old_path = os.path.join(directory, filename)
        new_name = 'new_' + filename
        new_path = os.path.join(directory, new_name)
        os.rename(old_path, new_path)
        print(f"Renamed '{filename}' to '{new_name}'")
    
    # 2. 移動所有 PDF 文件到 PDF_Docs 文件夾
    pdf_target_dir = os.path.join(directory, 'PDF_Docs')
    if not os.path.exists(pdf_target_dir):
        os.makedirs(pdf_target_dir)
    
    for filename in pdf_files:
        old_path = os.path.join(directory, 'new_' + filename)
        new_path = os.path.join(pdf_target_dir, filename)
        shutil.move(old_path, new_path)
        print(f"Moved '{filename}' to 'PDF_Docs'")
    
    # 3. 移動所有圖片到 Images 文件夾
    image_files = [f for f in os.listdir(directory) if f.endswith(('.jpg', '.png'))]
    images_target_dir = os.path.join(directory, 'Images')
    if not os.path.exists(images_target_dir):
        os.makedirs(images_target_dir)
    
    for filename in image_files:
        old_path = os.path.join(directory, filename)
        new_path = os.path.join(images_target_dir, filename)
        shutil.move(old_path, new_path)
        print(f"Moved '{filename}' to 'Images'")
    
    # 4. 剩余文件壓縮成一個 ZIP 文件
    remaining_files = [f for f in os.listdir(directory) if f not in pdf_files and f not in image_files]
    zip_file = os.path.join(directory, 'remaining_files.zip')
    with zipfile.ZipFile(zip_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for filename in remaining_files:
            file_path = os.path.join(directory, filename)
            zipf.write(file_path, arcname=filename)
            print(f"Added '{filename}' to 'remaining_files.zip'")
    
    print("All tasks completed successfully!")

# 測試函數
directory_path = "path/to/your/Documents"
manage_files(directory_path)

輸出:

Renamed 'report.pdf' to 'new_report.pdf'
Moved 'report.pdf' to 'PDF_Docs'
Moved 'image.jpg' to 'Images'
Added 'data.csv' to 'remaining_files.zip'
All tasks completed successfully!

解釋:

  • 重命名 PDF 文件: 使用列表推導式篩選出所有 PDF 文件,并逐個重命名。
  • 移動 PDF 文件: 創(chuàng)建 PDF_Docs 文件夾,并將所有 PDF 文件移動進去。
  • 移動圖片文件: 創(chuàng)建 Images 文件夾,并將所有圖片文件移動進去。
  • 壓縮剩余文件: 將剩余文件壓縮成一個 ZIP 文件。

總結

本文介紹了如何利用 Python 進行批量文件管理,包括重命名文件、按類型移動文件、批量壓縮文件以及解壓縮文件等操作。通過具體的代碼示例,展示了這些任務的實現方法。這些技術可以幫助用戶高效地組織和處理大量文件,提高工作效率。

責任編輯:趙寧寧 來源: 手把手PythonAI編程
相關推薦

2020-06-04 08:15:53

Kubernetes容器PaaS

2014-04-28 09:29:36

2023-07-05 07:36:36

SpringJava代碼

2020-08-13 10:29:55

項目管理項目經理CIO

2024-11-14 09:00:00

Python上下文管理器

2018-05-31 16:52:07

數字化轉型

2018-05-11 13:30:19

CIO 數字化轉型

2010-03-30 11:00:46

Oracle 數據

2024-11-04 15:49:02

2021-11-29 18:02:50

網絡電纜布線

2022-05-04 12:44:57

Python編程語言

2024-09-26 10:00:00

Python文件處理

2021-11-10 09:30:11

Python工具命令

2010-10-09 09:46:28

MySQL外鍵

2010-11-03 11:18:16

職場

2022-03-30 14:13:53

安全漏洞首席信息安全官

2024-11-20 12:21:37

2013-05-22 16:37:15

優(yōu)化IAP設計運營推廣

2013-03-18 13:31:28

2024-06-25 12:45:05

點贊
收藏

51CTO技術棧公眾號