最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用os、pathlib、shutil實現(xiàn)文件與目錄自動化實戰(zhàn)

 更新時間:2026年05月29日 08:51:57   作者:我材不敲代碼  
在日常辦公、開發(fā)運維、數(shù)據(jù)處理場景中,文件操作是最高頻的需求之一手動操作重復繁瑣、效率極低,而Python可以通過內(nèi)置庫實現(xiàn)全自動化處理,本文將從現(xiàn)代首選pathlib入手,循序漸進講解三大庫的核心用法,搭配可直接運行的代碼案例,需要的朋友可以參考下

前言

在日常辦公、開發(fā)運維、數(shù)據(jù)處理場景中,文件操作是最高頻的需求之一:批量重命名照片、分類整理文檔、批量壓縮文件夾、清理無用緩存文件、批量讀寫數(shù)據(jù)文件等。手動操作重復繁瑣、效率極低,而Python可以通過內(nèi)置庫實現(xiàn)全自動化處理。

Python文件自動化核心依賴三大內(nèi)置庫,無需額外安裝,開箱即用,覆蓋基礎路徑處理、系統(tǒng)級操作、高級批量文件處理全場景,是Python自動化必備核心技能。

Python 文件操作三大核心庫對比:

對比維度

pathlib

os

shutil

定位

現(xiàn)代面向?qū)ο舐窂讲僮?/p>

系統(tǒng)級底層文件/目錄操作

高級文件批量操作

Python版本

3.4+ 新增

全版本兼容

全版本兼容

代碼風格

簡潔優(yōu)雅、面向?qū)ο?/p>

函數(shù)式、傳統(tǒng)繁瑣

功能聚合、調(diào)用簡單

核心優(yōu)勢

路徑處理極簡、跨平臺、可讀性強

權限操作、系統(tǒng)參數(shù)獲取、兼容性強

支持文件夾整體復制、壓縮、遞歸操作

學習難度

推薦場景

日常90%文件路徑操作

系統(tǒng)配置、權限修改、兼容舊項目

批量復制、移動、壓縮、刪除文件夾

本文將從現(xiàn)代首選pathlib入手,循序漸進講解三大庫的核心用法,搭配可直接運行的代碼案例,最后通過綜合實戰(zhàn),帶你掌握文件自動化全流程開發(fā)。

第一章:核心庫對比與環(huán)境準備

1.1 三大文件庫定位區(qū)別

很多新手會混淆os、pathlib、shutil三個庫,簡單一句話區(qū)分:

  • pathlib:新時代文件操作標準,替代os.path,專門處理路徑、文件判斷、遍歷、讀寫,代碼極簡
  • os:系統(tǒng)底層操作,處理目錄創(chuàng)建、刪除、系統(tǒng)環(huán)境、文件權限,兼容老舊項目
  • shutil:高級工具庫,彌補os短板,支持整個文件夾復制、遞歸刪除、文件壓縮解壓

1.2 環(huán)境與導入方式

三個庫均為Python內(nèi)置標準庫,無需pip安裝,直接導入即可使用:

# 導入三大核心庫
from pathlib import Path
import os
import shutil

第二章:pathlib —— 現(xiàn)代Python文件操作首選

pathlib采用面向?qū)ο笤O計,摒棄了os.path繁瑣的字符串拼接方式,跨平臺兼容性極強(自動適配Windows/Linux/Mac路徑分隔符),是目前Python官方推薦的文件操作方式。

2.1 Path路徑創(chuàng)建與解析

支持絕對路徑、相對路徑創(chuàng)建,可快速拼接路徑、獲取路徑各層級信息:

from pathlib import Path

# 1. 創(chuàng)建相對路徑
p1 = Path("test/file.txt")
# 2. 創(chuàng)建絕對路徑
p2 = Path("/Users/xxx/Desktop/file.txt")
# 3. 拼接路徑(極簡寫法,替代字符串拼接)
p3 = Path("test") / "img" / "photo.jpg"

# 路徑信息解析
print("文件名:", p3.name)          # photo.jpg
print("文件后綴:", p3.suffix)      # .jpg
print("純文件名:", p3.stem)        # photo
print("上級目錄:", p3.parent)      # test/img
print("是否絕對路徑:", p3.is_absolute())

2.2 路徑判斷與屬性獲取

快速判斷路徑是否存在、是文件還是文件夾,獲取文件大小、修改時間等屬性:

from pathlib import Path

p = Path("test.jpg")

# 基礎判斷
print("路徑是否存在:", p.exists())
print("是否是文件:", p.is_file())
print("是否是文件夾:", p.is_dir())

# 文件屬性
if p.exists():
    print("文件大小(字節(jié)):", p.stat().st_size)
    print("最后修改時間:", p.stat().st_mtime)

2.3 文件/目錄創(chuàng)建與刪除

from pathlib import Path

# 1. 創(chuàng)建單層目錄
dir1 = Path("test_dir")
dir1.mkdir(exist_ok=True)  # exist_ok=True 存在則不報錯

# 2. 創(chuàng)建多級嵌套目錄
dir2 = Path("a/b/c")
dir2.mkdir(parents=True, exist_ok=True)

# 3. 創(chuàng)建空文件
file = Path("test.txt")
file.touch(exist_ok=True)

# 4. 刪除文件/空目錄
file.unlink(missing_ok=True)  # 刪除文件
dir1.rmdir()  # 刪除空目錄

2.4 遍歷目錄與批量匹配文件

支持遍歷文件夾、批量篩選指定后綴文件,是批量處理的核心功能:

from pathlib import Path

# 目標文件夾
root = Path("./photos")

# 1. 遍歷當前目錄所有文件(不遞歸)
for file in root.iterdir():
    if file.is_file():
        print("文件:", file.name)

# 2. 批量匹配所有jpg/png圖片(遞歸遍歷子文件夾)
img_list = list(root.rglob("*.jpg")) + list(root.rglob("*.png"))
print("圖片總數(shù):", len(img_list))

# 3. 匹配所有txt文檔
txt_list = list(root.rglob("*.txt"))

2.5 文件讀寫極簡操作

pathlib簡化了文件讀寫操作,無需手動open/close,代碼更簡潔:

from pathlib import Path

file = Path("data.txt")

# 寫入內(nèi)容(覆蓋寫入)
file.write_text("Hello Python文件自動化!", encoding="utf-8")

# 追加內(nèi)容
file.write_text("\n新增一行內(nèi)容", encoding="utf-8")

# 讀取內(nèi)容
content = file.read_text(encoding="utf-8")
print("文件內(nèi)容:", content)

# 讀寫二進制文件(圖片、視頻等)
img = Path("test.jpg")
img_data = img.read_bytes()

第三章:os模塊 —— 底層系統(tǒng)級文件操作

os模塊是Python傳統(tǒng)文件操作核心,主打系統(tǒng)層級操作,適合需要兼容舊項目、修改文件權限、獲取系統(tǒng)路徑的場景。

3.1 常用路徑與目錄操作

import os

# 獲取當前工作目錄
print("當前目錄:", os.getcwd())

# 切換工作目錄
os.chdir("./test")

# 創(chuàng)建/刪除目錄
os.mkdir("os_dir")  # 單層目錄
os.makedirs("x/y/z", exist_ok=True)  # 多級目錄
os.rmdir("os_dir")  # 刪除空目錄

# 路徑拼接(傳統(tǒng)方式)
path = os.path.join("test", "img", "1.jpg")
print("拼接路徑:", path)

# 判斷路徑
print(os.path.exists(path))
print(os.path.isfile(path))
print(os.path.isdir(path))

3.2 系統(tǒng)環(huán)境與文件權限操作

import os

# 獲取系統(tǒng)環(huán)境變量
print("系統(tǒng)PATH:", os.environ.get("PATH"))

# 修改文件權限(Linux/Mac生效)
os.chmod("test.txt", 0o755)

# 獲取文件絕對路徑
abs_path = os.path.abspath("test.txt")
print("絕對路徑:", abs_path)

3.3 傳統(tǒng)文件遍歷方法

import os

# 遍歷目錄所有文件
for root, dirs, files in os.walk("./test"):
    print("當前遍歷目錄:", root)
    print("子文件夾:", dirs)
    print("所有文件:", files)

第四章:shutil —— 高級文件批量操作工具

os和pathlib無法直接復制/移動非空文件夾,也不支持壓縮解壓,shutil完美彌補該短板,是批量文件處理的核心工具。

4.1 文件/文件夾復制與移動

import shutil

# 1. 復制單個文件
shutil.copy("test.txt", "copy_test.txt")

# 2. 復制整個文件夾(包含所有子文件)
shutil.copytree("./src_dir", "./dst_dir", dirs_exist_ok=True)

# 3. 移動文件/文件夾
shutil.move("copy_test.txt", "./dst_dir/copy_test.txt")

# 4. 重命名文件
shutil.move("old_name.txt", "new_name.txt")

4.2 批量刪除與遞歸清空

import shutil

# 遞歸刪除整個文件夾(包含所有文件和子文件夾)
shutil.rmtree("./dst_dir", ignore_errors=True)

4.3 壓縮與解壓文件

import shutil
import zipfile

# 1. 壓縮整個文件夾為zip
shutil.make_archive("壓縮包", "zip", "./src_dir")

# 2. 解壓zip文件
with zipfile.ZipFile("壓縮包.zip", "r") as zip_ref:
    zip_ref.extractall("./解壓目錄")

第五章:綜合實戰(zhàn):文件批量自動化工具

整合三大庫核心功能,開發(fā)3個可直接落地的實戰(zhàn)腳本,覆蓋日常高頻自動化場景。

5.1 實戰(zhàn)1:批量重命名文件

批量修改文件夾內(nèi)所有圖片名稱,統(tǒng)一格式:序號+自定義名稱

from pathlib import Path

def batch_rename(folder_path, prefix="風景"):
    """批量重命名圖片文件"""
    path = Path(folder_path)
    # 篩選所有圖片
    img_list = list(path.glob("*.jpg")) + list(path.glob("*.png"))
    
    for idx, file in enumerate(img_list, 1):
        # 新文件名
        new_name = f"{prefix}_{idx}{file.suffix}"
        new_path = path / new_name
        file.rename(new_path)
        print(f"重命名成功: {file.name} → {new_name}")

# 調(diào)用
batch_rename("./photos", prefix="旅行照片")

5.2 實戰(zhàn)2:分類整理不同格式文件

自動識別文件后綴,將圖片、文檔、視頻、壓縮包分類歸檔

from pathlib import Path
import shutil

def classify_files(folder_path):
    """文件自動分類整理"""
    path = Path(folder_path)
    # 定義文件分類規(guī)則
    classify_rule = {
        "圖片": [".jpg", ".png", ".jpeg", ".gif"],
        "文檔": [".txt", ".pdf", ".docx", ".xlsx"],
        "壓縮包": [".zip", ".rar", ".7z"],
        "視頻": [".mp4", ".avi", ".mov"]
    }

    # 遍歷所有文件
    for file in path.iterdir():
        if file.is_dir():
            continue
        suffix = file.suffix.lower()
        # 匹配分類
        for folder, suffix_list in classify_rule.items():
            if suffix in suffix_list:
                target_dir = path / folder
                target_dir.mkdir(exist_ok=True)
                shutil.move(str(file), str(target_dir / file.name))
                print(f"分類成功: {file.name} → {folder}")
                break

# 調(diào)用
classify_files("./混合文件")

5.3 實戰(zhàn)3:批量壓縮指定目錄文件

import shutil
from datetime import datetime

def zip_folder(folder_path):
    """批量壓縮文件夾,命名帶時間戳"""
    now = datetime.now().strftime("%Y%m%d%H%M%S")
    zip_name = f"文件備份_{now}"
    shutil.make_archive(zip_name, "zip", folder_path)
    print(f"壓縮完成,文件名稱:{zip_name}.zip")

# 調(diào)用
zip_folder("./photos_processed")

三大庫選擇指南與最佳實踐

業(yè)務需求

推薦庫

核心原因

路徑拼接、文件遍歷、批量篩選

pathlib

代碼簡潔、跨平臺、可讀性極強

文件讀寫、判斷文件屬性

pathlib

極簡API,無需手動管理文件句柄

系統(tǒng)環(huán)境獲取、文件權限修改

os

專屬系統(tǒng)級操作,無替代方案

兼容老舊Python項目

os/os.path

低版本Python不支持pathlib

文件夾整體復制、遞歸刪除

shutil

唯一支持批量文件夾操作的內(nèi)置庫

文件壓縮、解壓、批量遷移

shutil+zipfile

功能完善、開箱即用

總結(jié)

1、優(yōu)先使用pathlib:日常90%的文件路徑、遍歷、讀寫場景,pathlib都是最優(yōu)選擇,代碼更優(yōu)雅、跨平臺兼容性更好。

2、os作為補充:僅在需要系統(tǒng)級操作、兼容舊項目時使用。

3、shutil處理批量復雜操作:文件夾復制、遞歸刪除、壓縮解壓必備。

三者組合使用,可以實現(xiàn)所有文件自動化場景,徹底解放雙手,大幅提升辦公和開發(fā)效率。

以上就是Python使用os、pathlib、shutil實現(xiàn)文件與目錄自動化實戰(zhàn)的詳細內(nèi)容,更多關于Python文件與目錄自動化的資料請關注腳本之家其它相關文章!

相關文章

  • python如何做代碼性能分析

    python如何做代碼性能分析

    這篇文章主要介紹了python如何做代碼性能分析,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-04-04
  • Flask學習筆記之日志操作配置實例講解

    Flask學習筆記之日志操作配置實例講解

    這篇文章主要為大家介紹了Flask學習筆記之日志操作配置實例講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Python中微服務架構的設計與實現(xiàn)詳解

    Python中微服務架構的設計與實現(xiàn)詳解

    在當今軟件開發(fā)領域中,微服務架構已經(jīng)成為了一種流行的設計范式,這篇文章主要為大家介紹了如何使用Python語言來設計和實現(xiàn)微服務架構,需要的可以參考一下
    2024-04-04
  • python處理json數(shù)據(jù)中的中文

    python處理json數(shù)據(jù)中的中文

    這篇文章主要介紹了python處理json數(shù)據(jù)中的中文問題,需要的朋友可以參考下
    2014-03-03
  • python 對xml解析的示例

    python 對xml解析的示例

    這篇文章主要介紹了python 如何對xml解析,幫助大家更好的理解和學習使用python,感興趣的朋友可以了解下
    2021-02-02
  • 在Python的Django框架中包裝視圖函數(shù)

    在Python的Django框架中包裝視圖函數(shù)

    這篇文章主要介紹了在Python的Django框架中包裝視圖函數(shù)的方法,即requires_login的相關方法,需要的朋友可以參考下
    2015-07-07
  • python篩選出兩個文件中重復行的方法

    python篩選出兩個文件中重復行的方法

    這篇文章主要為大家詳細介紹了python篩選出兩個文件中重復行的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 為什么你還不懂得怎么使用Python協(xié)程

    為什么你還不懂得怎么使用Python協(xié)程

    這篇文章主要給大家介紹了關于為什么你還不懂得怎么使用Python協(xié)程的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-05-05
  • Python numpy和matlab的幾點差異介紹

    Python numpy和matlab的幾點差異介紹

    這篇文章主要介紹了Python numpy和matlab的幾點差異,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python實現(xiàn)批量下載新浪博客的方法

    python實現(xiàn)批量下載新浪博客的方法

    這篇文章主要介紹了python實現(xiàn)批量下載新浪博客的方法,涉及Python頁面抓取的相關實現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06

最新評論

砚山县| 孙吴县| 杂多县| 陆河县| 丘北县| 綦江县| 丘北县| 曲周县| 游戏| 民权县| 沅陵县| 徐汇区| 维西| 华池县| 安庆市| 合阳县| 漳浦县| 北海市| 林周县| 枣庄市| 南丰县| 凤冈县| 华阴市| 咸阳市| 改则县| 汉沽区| 扎囊县| 黄平县| 库车县| 个旧市| 马尔康县| 朝阳县| 耿马| 陕西省| 双牌县| 赤壁市| 威海市| 泉州市| 固原市| 临泉县| 旬邑县|