成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

自動化文件管理的六個 Python 腳本模板

開發
本文介紹了從基本列出文件到高級文件處理操作如分類、移動、大小計算、刪除、以及壓縮等多個Python腳本模版;并且給出了實際應用場景下綜合運用多個腳本的情況解析。

文件管理是我們日常工作中常見的任務之一,Python作為一種功能強大的編程語言,可以幫助我們輕松完成這些任務。今天我們來學習6個實用的Python腳本模板,讓自動化文件管理工作變得簡單又高效。

1. 獲取指定目錄下的所有文件

首先,我們學習如何獲取指定目錄下的所有文件。這通常是文件管理的第一步。

import os

def list_files_in_directory(directory):
    # 使用os.listdir列出指定目錄中的所有文件和子目錄
    files_and_directories = os.listdir(directory)
    # 篩選出文件(不是子目錄)
    only_files = [file for file in files_anddirectories if os.path.isfile(os.path.join(directory, file))]
    return only_files

# 示例使用
my_directory = 'C:/Users/username/Documents'
files = list_files_in_directory(my_directory)
print("以下是文件列表:")
for f in files:
    print(f)

# 輸出:將顯示指定目錄的所有文件名稱。

這個函數利用了os模塊來處理與文件相關的操作。

2. 文件按擴展名分類

當我們需要對大量文件進行整理時,按擴展名分類是一個非常好的方法。

def sort_files_by_extension(directory):
    from collections import defaultdict
    files_dict = defaultdict(list)  # 創建默認字典用于存儲不同擴展名的文件
    
    for file_name in os.listdir(directory):
        if os.path.isfile(os.path.join(directory, file_name)):  # 檢查是否是文件
            _, ext = os.path.splitext(file_name)  # 分割文件名和擴展名
            if ext:  # 如果有擴展名,則加入到相應的鍵中
                files_dict[ext].append(file_name)

    return dict(files_dict)

# 示例使用
my_directory = "C:/temp"
files_sorted = sort_files_by_extension(my_directory)

# 打印分類后的結果
for extension, files_list in files_sorted.items():
    print(f"文件類型 {extension}:")
    for fname in files_list:
        print(fname)

這里用到了collections.defaultdict以便于快速生成一個按照文件擴展名歸類的字典。

3. 移動文件到特定的文件夾

當你已經按照某種規則分類了文件,下一步就是把它們移動到相應的位置上。

import shutil

def move_files_based_on_extension(source_dir, destination_base_dir):
    sorted_files = sort_files_by_extension(source_dir)
    
    for ext, filenames in sorted_files.items():
        destination_folder = os.path.join(destination_base_dir, ext[1:])  # 忽略點號
        
        if not os.path.exists(destination_folder):  # 如果不存在則創建
            os.makedirs(destination_folder)
        
        for filename in filenames:
            full_path = os.path.join(source_dir, filename)
            new_path = os.path.join(destination_folder, filename)
            shutil.move(full_path, new_path)  # 移動文件
            print(f"已將文件{filename}移動到{new_path}")

# 示例使用
move_files_based_on_extension('C:/Source', 'C:/Destination')

我們用到shutil.move()函數來執行文件移動,并且保證了不會丟失原文件位置信息。

4. 計算單個或多個文件的總大小

知道所管理和移動的文件總體量,對于優化磁盤空間非常有用。

def get_total_size_of_files(directory, filenames=None):
    total_size = 0
    
    if filenames is None:  # 如果沒有指定文件列表,則讀取全部文件
        filenames = os.listdir(directory)

    for filename in filenames:
        filepath = os.path.join(directory, filename)
        if os.path.isfile(filepath):  # 只考慮實際存在的文件
            total_size += os.path.getsize(filepath)

    return total_size

# 示例
size = get_total_size_of_files('C:/SourceFiles')
print(f"該目錄下文件總大小為: {size/(1024**2)} MB")  # 轉換為MB

這里的代碼展示了如何通過遍歷和os.path.getsize()函數得到所有文件的總大小。

5. 刪除超過一定天數的舊文件

有時需要清理長期未被訪問的舊文件。

from datetime import datetime, timedelta

def remove_old_files(path_to_scan, days_limit=30):
    critical_time = datetime.now() - timedelta(days=days_limit)

    for root, dirs, files in os.walk(path_to_scan):
        for file in files:
            file_full_path = os.path.join(root, file)
            mod_time = datetime.fromtimestamp(os.path.getmtime(file_full_path))
            if mod_time < critical_time:  # 超過限制日期,刪除
                print(f"刪除文件:{file_full_path}")
                os.remove(file_full_path)

# 使用示例
remove_old_files('C:/OldData', 365)  # 刪除一年以上的文件

通過比較文件修改時間與設定的天數限制值,可以確定哪些文件應該被刪除。

6. 壓縮文件或整個目錄為zip格式

最終的一個腳本例子是如何將某些重要文件壓縮成.zip形式保存。

import zipfile

def compress_directory(dir_to_zip, output_filename='archive'):
    # 創建壓縮包實例
    zipf = zipfile.ZipFile(output_filename + '.zip', 'w', zipfile.ZIP_DEFLATED)
    
    # 遍歷并添加所有文件到zip包內
    for root, dirs, files in os.walk(dir_to_zip):
        for file in files:
            zipf.write(os.path.join(root, file), 
                       os.path.relpath(os.path.join(root, file), 
                                        os.path.join(dir_to_zip, '..')))

    zipf.close()

# 使用
compress_directory('C:/BackupThis', 'backup_archive')

上述代碼將指定目錄下的所有內容都添加到名為“archive.zip”的壓縮文件里。

實戰案例:整理家庭相冊

設想一下你需要整理一個包含數千張照片的大相冊:

  • 步驟一: 獲取目標目錄里的全部圖片。
  • 步驟二: 根據年份(通過圖片元數據提取或者以文件創建時間為標準)分組。
  • 步驟三: 新建相應的文件夾,并按組移入相應的位置。
  • 步驟四: 壓縮每一年的照片為單獨的存檔壓縮文件備份至另一存儲裝置上。 通過組合以上模板可以有效實現上述流程。

本文介紹了從基本列出文件到高級文件處理操作如分類、移動、大小計算、刪除、以及壓縮等多個Python腳本模版;并且給出了實際應用場景下綜合運用多個腳本的情況解析。

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

2025-04-02 08:20:00

Python自動化文件管理腳本模板

2021-11-30 07:01:19

Python自動化腳本

2021-12-14 14:33:44

人工智能AI深度學習

2023-05-04 10:30:39

自動駕駛自動化

2021-10-09 10:26:14

人工智能IT自動化AI

2024-05-13 16:29:56

Python自動化

2020-11-26 10:07:15

CIO首席信息官 IT自動化

2024-11-13 13:14:38

2022-02-17 13:03:28

Python腳本代碼

2024-08-16 21:51:42

2024-06-21 10:46:44

2021-01-27 07:56:04

Python編程語言

2021-02-02 09:00:00

機器人人工智能IT

2025-02-07 12:58:33

python自動化腳本

2021-07-16 10:27:07

ITIT領導IT管理

2022-08-05 09:06:07

Python腳本代碼

2020-03-09 11:39:23

漏洞黑客網絡安全

2024-11-11 16:55:54

2024-08-14 14:42:00

2022-05-15 00:20:43

特權訪問管理PAM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 野狼在线社区2017入口 | 久久久久亚洲av毛片大全 | 成人精品鲁一区一区二区 | 水蜜桃久久夜色精品一区 | 华人黄网站大全 | 欧美视频在线免费 | 99爱在线免费观看 | 五月免费视频 | 免费99视频 | 久久久久网站 | 欧美日本一区 | 欧美极品一区二区 | 一本色道精品久久一区二区三区 | 国产综合视频 | 99久久精品国产一区二区三区 | 欧美精品久久久久久 | 精品久久久久久久久久久久久久久久久 | 日韩精品在线视频 | 最新中文字幕 | 亚洲一区二区三区在线播放 | 日韩第一区 | 神马久久av | 国产精品一区二区av | 国产精品一区一区三区 | 99精品视频在线观看免费播放 | 中文字幕影院 | 国产成人啪免费观看软件 | 黄色一级大片在线观看 | 国产免费一区二区三区 | 日本不卡一区二区三区在线观看 | 国产91久久久久久 | 男女羞羞视频大全 | 成人在线精品 | 中文字幕综合在线 | 久久精品电影 | 99国内精品久久久久久久 | 美国黄色毛片 | 男人阁久久 | 久久99久久99精品免视看婷婷 | 久久综合欧美 | 欧美三级网站 |