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

自動(dòng)化文件管理的六個(gè) Python 腳本模板

開發(fā)
本文介紹了從基本列出文件到高級(jí)文件處理操作如分類、移動(dòng)、大小計(jì)算、刪除、以及壓縮等多個(gè)Python腳本模版;并且給出了實(shí)際應(yīng)用場景下綜合運(yùn)用多個(gè)腳本的情況解析。

文件管理是我們?nèi)粘9ぷ髦谐R姷娜蝿?wù)之一,Python作為一種功能強(qiáng)大的編程語言,可以幫助我們輕松完成這些任務(wù)。今天我們來學(xué)習(xí)6個(gè)實(shí)用的Python腳本模板,讓自動(dòng)化文件管理工作變得簡單又高效。

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

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

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)

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

這個(gè)函數(shù)利用了os模塊來處理與文件相關(guān)的操作。

2. 文件按擴(kuò)展名分類

當(dāng)我們需要對(duì)大量文件進(jìn)行整理時(shí),按擴(kuò)展名分類是一個(gè)非常好的方法。

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

    return dict(files_dict)

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

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

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

3. 移動(dòng)文件到特定的文件夾

當(dāng)你已經(jīng)按照某種規(guī)則分類了文件,下一步就是把它們移動(dòng)到相應(yīng)的位置上。

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:])  # 忽略點(diǎn)號(hào)
        
        if not os.path.exists(destination_folder):  # 如果不存在則創(chuàng)建
            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)  # 移動(dòng)文件
            print(f"已將文件{filename}移動(dòng)到{new_path}")

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

我們用到shutil.move()函數(shù)來執(zhí)行文件移動(dòng),并且保證了不會(huì)丟失原文件位置信息。

4. 計(jì)算單個(gè)或多個(gè)文件的總大小

知道所管理和移動(dòng)的文件總體量,對(duì)于優(yōu)化磁盤空間非常有用。

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):  # 只考慮實(shí)際存在的文件
            total_size += os.path.getsize(filepath)

    return total_size

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

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

5. 刪除超過一定天數(shù)的舊文件

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

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)  # 刪除一年以上的文件

通過比較文件修改時(shí)間與設(shè)定的天數(shù)限制值,可以確定哪些文件應(yīng)該被刪除。

6. 壓縮文件或整個(gè)目錄為zip格式

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

import zipfile

def compress_directory(dir_to_zip, output_filename='archive'):
    # 創(chuàng)建壓縮包實(shí)例
    zipf = zipfile.ZipFile(output_filename + '.zip', 'w', zipfile.ZIP_DEFLATED)
    
    # 遍歷并添加所有文件到zip包內(nèi)
    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')

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

實(shí)戰(zhàn)案例:整理家庭相冊(cè)

設(shè)想一下你需要整理一個(gè)包含數(shù)千張照片的大相冊(cè):

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

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

責(zé)任編輯:趙寧寧 來源: 手把手PythonAI編程
相關(guān)推薦

2025-04-02 08:20:00

Python自動(dòng)化文件管理腳本模板

2021-11-30 07:01:19

Python自動(dòng)化腳本

2021-12-14 14:33:44

人工智能AI深度學(xué)習(xí)

2023-05-04 10:30:39

自動(dòng)駕駛自動(dòng)化

2021-10-09 10:26:14

人工智能IT自動(dòng)化AI

2024-05-13 16:29:56

Python自動(dòng)化

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

2020-11-26 10:07:15

CIO首席信息官 IT自動(dòng)化

2021-01-27 07:56:04

Python編程語言

2025-02-07 12:58:33

python自動(dòng)化腳本

2022-08-05 09:06:07

Python腳本代碼

2021-02-02 09:00:00

機(jī)器人人工智能IT

2024-11-11 16:55:54

2024-08-14 14:42:00

2021-07-16 10:27:07

ITIT領(lǐng)導(dǎo)IT管理

2020-03-09 11:39:23

漏洞黑客網(wǎng)絡(luò)安全

2024-10-28 19:36:05

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)