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

Python實(shí)現(xiàn)單個(gè)或批量文件移動(dòng)的示例代碼

 更新時(shí)間:2025年12月29日 09:10:48   作者:小滿大王i  
日常辦公和數(shù)據(jù)處理中,我們經(jīng)常需要將文件從一個(gè)目錄移動(dòng)到另一個(gè)指定目錄,本文就來介紹一下Python實(shí)現(xiàn)單個(gè)或批量文件移動(dòng),具有一定的參考價(jià)值,感興趣的可以了解一下

在日常辦公和數(shù)據(jù)處理中,我們經(jīng)常需要將文件從一個(gè)目錄移動(dòng)到另一個(gè)指定目錄,手動(dòng)操作不僅繁瑣,還容易出錯(cuò)(尤其是批量移動(dòng)場景)。Python 提供了多種簡潔高效的實(shí)現(xiàn)方案,本文將詳細(xì)介紹文件移動(dòng)的核心方法,并結(jié)合實(shí)際案例實(shí)現(xiàn)批量文件移動(dòng)。

一、核心模塊介紹

Python 實(shí)現(xiàn)文件移動(dòng)主要依賴兩個(gè)核心模塊,各自有不同的適用場景:

  1. shutil 模塊:Python 標(biāo)準(zhǔn)庫中的高級(jí)文件操作模塊,提供了直接的文件/目錄移動(dòng)接口,兼容性好、使用簡單,是文件移動(dòng)的首選方案。
  2. os 模塊:Python 基礎(chǔ)文件操作模塊,主要用于輔助獲取文件路徑、遍歷目錄等,通常與 shutil 配合使用(批量移動(dòng)場景必備)。

二、單個(gè)文件移動(dòng)實(shí)現(xiàn)

使用 shutil.move(src, dst) 是實(shí)現(xiàn)單個(gè)文件移動(dòng)的核心函數(shù),參數(shù)說明:

  • src:源文件路徑(完整路徑/相對(duì)路徑均可,必須是具體文件,不能是目錄)
  • dst:目標(biāo)路徑,有兩種情況:
    1. 目標(biāo)路徑是目錄(已存在):文件將被移動(dòng)到該目錄下,保持原文件名不變
    2. 目標(biāo)路徑是具體文件名稱:文件移動(dòng)后將被重命名為該名稱

代碼示例

import shutil

def move_single_file(src_file, dst_path):
    """
    單個(gè)文件移動(dòng)
    :param src_file: 源文件完整路徑/相對(duì)路徑
    :param dst_path: 目標(biāo)目錄/目標(biāo)文件完整路徑
    """
    try:
        # 執(zhí)行文件移動(dòng)
        shutil.move(src_file, dst_path)
        print(f"文件移動(dòng)成功:{src_file} -> {dst_path}")
    except FileNotFoundError:
        print(f"錯(cuò)誤:源文件 {src_file} 不存在,或目標(biāo)目錄不存在")
    except PermissionError:
        print(f"錯(cuò)誤:沒有權(quán)限移動(dòng)文件 {src_file}")
    except Exception as e:
        print(f"未知錯(cuò)誤:{e}")

# 調(diào)用示例1:目標(biāo)路徑為目錄(文件保持原名)
if __name__ == "__main__":
    source_file = "test.txt"  # 源文件(當(dāng)前目錄下的test.txt)
    target_dir = "./target_folder"  # 目標(biāo)目錄(當(dāng)前目錄下的target_folder,需提前創(chuàng)建)
    move_single_file(source_file, target_dir)

    # 調(diào)用示例2:目標(biāo)路徑為文件(文件移動(dòng)后重命名)
    # source_file = "data.csv"
    # target_file = "./target_folder/new_data.csv"
    # move_single_file(source_file, target_file)

補(bǔ)充說明

  • 使用前需確保目標(biāo)目錄已存在(若不存在,可通過 os.makedirs(dst_dir, exist_ok=True) 自動(dòng)創(chuàng)建)
  • 該方法支持跨磁盤分區(qū)移動(dòng)文件(Windows 系統(tǒng)下也可正常使用)

三、批量文件移動(dòng)案例

批量文件移動(dòng)的核心思路是:遍歷源目錄中的目標(biāo)文件 → 逐個(gè)執(zhí)行移動(dòng)操作,以下提供 3 個(gè)實(shí)用案例,覆蓋不同場景需求。

案例1:批量移動(dòng)指定目錄下的所有文件(不限類型)

需求:將 source_folder 下的所有文件(不包含子目錄中的文件)批量移動(dòng)到 target_folder 中。

import shutil
import os

def batch_move_all_files(src_dir, dst_dir):
    """
    批量移動(dòng)指定目錄下的所有文件(不含子目錄文件)
    :param src_dir: 源目錄路徑
    :param dst_dir: 目標(biāo)目錄路徑
    """
    # 1. 檢查并創(chuàng)建目標(biāo)目錄(若不存在)
    if not os.path.exists(dst_dir):
        os.makedirs(dst_dir)
        print(f"目標(biāo)目錄不存在,已自動(dòng)創(chuàng)建:{dst_dir}")

    # 2. 遍歷源目錄中的所有文件
    for file_name in os.listdir(src_dir):
        # 拼接源文件完整路徑
        src_file_path = os.path.join(src_dir, file_name)
        # 判斷是否為文件(排除子目錄)
        if os.path.isfile(src_file_path):
            # 3. 執(zhí)行移動(dòng)(目標(biāo)路徑為目錄,保持原文件名)
            shutil.move(src_file_path, dst_dir)
            print(f"已移動(dòng):{file_name}")

    print("所有文件批量移動(dòng)完成!")

# 調(diào)用示例
if __name__ == "__main__":
    source_directory = "./source_files"  # 源目錄
    target_directory = "./target_files"  # 目標(biāo)目錄
    batch_move_all_files(source_directory, target_directory)

案例2:批量移動(dòng)指定類型的文件(按后綴名篩選)

需求:僅移動(dòng) source_folder 下的 .txt.pdf 文件,其他類型文件不處理。

import shutil
import os

def batch_move_specified_type(src_dir, dst_dir, file_extensions):
    """
    批量移動(dòng)指定后綴名的文件
    :param src_dir: 源目錄路徑
    :param dst_dir: 目標(biāo)目錄路徑
    :param file_extensions: 要移動(dòng)的文件后綴名列表(如 ['.txt', '.pdf'])
    """
    # 檢查并創(chuàng)建目標(biāo)目錄
    if not os.path.exists(dst_dir):
        os.makedirs(dst_dir)
        print(f"自動(dòng)創(chuàng)建目標(biāo)目錄:{dst_dir}")

    # 遍歷源目錄
    for file_name in os.listdir(src_dir):
        # 篩選指定后綴名的文件(忽略大小寫)
        if any(file_name.lower().endswith(ext.lower()) for ext in file_extensions):
            src_file_path = os.path.join(src_dir, file_name)
            if os.path.isfile(src_file_path):
                # 移動(dòng)文件
                shutil.move(src_file_path, dst_dir)
                print(f"已移動(dòng)指定類型文件:{file_name}")

    print(f"指定類型({file_extensions})文件批量移動(dòng)完成!")

# 調(diào)用示例
if __name__ == "__main__":
    src_dir = "./source_files"
    dst_dir = "./txt_pdf_target"
    target_extensions = [".txt", ".pdf"]  # 要移動(dòng)的文件類型
    batch_move_specified_type(src_dir, dst_dir, target_extensions)

案例3:遞歸批量移動(dòng)(包含子目錄中的目標(biāo)文件)

需求:移動(dòng) source_folder 及其所有子目錄下的 .jpg 圖片文件,保持文件的相對(duì)目錄結(jié)構(gòu)(可選)。

import shutil
import os

def batch_move_recursive(src_dir, dst_dir, file_extension=".jpg"):
    """
    遞歸遍歷子目錄,批量移動(dòng)指定類型文件
    :param src_dir: 源根目錄路徑
    :param dst_dir: 目標(biāo)根目錄路徑
    :param file_extension: 要移動(dòng)的文件后綴名
    """
    # 遍歷源目錄及其所有子目錄(遞歸遍歷)
    for root, dirs, files in os.walk(src_dir):
        for file_name in files:
            # 篩選指定后綴名文件
            if file_name.lower().endswith(file_extension.lower()):
                # 源文件完整路徑
                src_file_path = os.path.join(root, file_name)
                # (可選)保持相對(duì)目錄結(jié)構(gòu):拼接目標(biāo)文件的相對(duì)路徑
                relative_path = os.path.relpath(root, src_dir)
                target_sub_dir = os.path.join(dst_dir, relative_path)
                if not os.path.exists(target_sub_dir):
                    os.makedirs(target_sub_dir)

                # 移動(dòng)文件到對(duì)應(yīng)子目錄
                shutil.move(src_file_path, target_sub_dir)
                print(f"已遞歸移動(dòng):{src_file_path} -> {target_sub_dir}")

    print(f"遞歸批量移動(dòng) {file_extension} 文件完成!")

# 調(diào)用示例
if __name__ == "__main__":
    source_root_dir = "./source_images"
    target_root_dir = "./target_images"
    batch_move_recursive(source_root_dir, target_root_dir, ".jpg")

四、常見問題與注意事項(xiàng)

  1. 目標(biāo)目錄不存在:使用 os.makedirs(dst_dir, exist_ok=True) 可自動(dòng)創(chuàng)建目錄,exist_ok=True 表示目錄已存在時(shí)不報(bào)錯(cuò)。
  2. 文件重名沖突:若目標(biāo)目錄中已存在同名文件,shutil.move() 會(huì)直接覆蓋原有文件(Windows 系統(tǒng)下會(huì)提示確認(rèn),Linux/Mac 系統(tǒng)下直接覆蓋)。如需避免覆蓋,可在移動(dòng)前判斷目標(biāo)文件是否存在:
    dst_file_path = os.path.join(dst_dir, file_name)
    if not os.path.exists(dst_file_path):
        shutil.move(src_file_path, dst_dir)
    else:
        print(f"目標(biāo)目錄已存在同名文件,跳過:{file_name}")
    
  3. 路徑格式問題:推薦使用 os.path.join() 拼接路徑,可自動(dòng)適配 Windows(\)和 Linux/Mac(/)的路徑分隔符,避免手動(dòng)拼接路徑導(dǎo)致的錯(cuò)誤。
  4. 權(quán)限問題:若程序提示 PermissionError,需檢查源文件/目標(biāo)目錄的讀寫權(quán)限(Windows 下可能是文件被占用,Linux/Mac 下可通過 chmod 命令修改權(quán)限)。

總結(jié)

  1. Python 文件移動(dòng)的核心是 shutil.move() 函數(shù),搭配 os 模塊可實(shí)現(xiàn)靈活的路徑處理和目錄遍歷。
  2. 單個(gè)文件移動(dòng)直接使用 shutil.move(src, dst),需注意目標(biāo)路徑是目錄還是具體文件名。
  3. 批量文件移動(dòng)的關(guān)鍵是遍歷源目錄,可通過 os.listdir()(非遞歸)或 os.walk()(遞歸)實(shí)現(xiàn)文件篩選。
  4. 實(shí)際使用中需處理目錄不存在、文件重名、權(quán)限不足等異常情況,提升程序的健壯性。

到此這篇關(guān)于Python實(shí)現(xiàn)單個(gè)或批量文件移動(dòng)的示例代碼的文章就介紹到這了,更多相關(guān)Python 單個(gè)或批量文件移動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python多版本管理/切換/共存問題的解決

    Python多版本管理/切換/共存問題的解決

    本文介紹了在安裝多個(gè)Python版本時(shí),為了防止沖突和便于切換版本,可以給不同路徑下的python.exe文件改名的方法,并解釋了如何使用命令行輸入不同的python命令來使用相應(yīng)版本的Python
    2026-03-03
  • Python try except finally資源回收的實(shí)現(xiàn)

    Python try except finally資源回收的實(shí)現(xiàn)

    這篇文章主要介紹了Python try except finally資源回收的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • django項(xiàng)目搭建與Session使用詳解

    django項(xiàng)目搭建與Session使用詳解

    這篇文章主要給大家介紹了關(guān)于django項(xiàng)目搭建與Session使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Python實(shí)現(xiàn)的爬取豆瓣電影信息功能案例

    Python實(shí)現(xiàn)的爬取豆瓣電影信息功能案例

    這篇文章主要介紹了Python實(shí)現(xiàn)的爬取豆瓣電影信息功能,結(jié)合具體實(shí)例形式分析了Python基于requests庫的爬蟲使用技巧,需要的朋友可以參考下
    2019-09-09
  • 淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴}

    淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴}

    這篇文章主要介紹了淺談在django中使用redirect重定向數(shù)據(jù)傳輸?shù)膯栴},具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python中PDF解析利器pdfplumber的使用詳細(xì)教程

    Python中PDF解析利器pdfplumber的使用詳細(xì)教程

    pdfplumber是一個(gè)Python庫,專門用于從PDF文件中提取文本、表格和其他信息,本文將為大家詳細(xì)介紹一下pdfplumber的安裝與詳細(xì)使用,有需要的小伙伴可以參考下
    2025-04-04
  • Python實(shí)現(xiàn)剪刀石頭布小游戲(與電腦對(duì)戰(zhàn))

    Python實(shí)現(xiàn)剪刀石頭布小游戲(與電腦對(duì)戰(zhàn))

    這篇文章給大家分享Python基礎(chǔ)實(shí)現(xiàn)與電腦對(duì)戰(zhàn)的剪刀石頭布小游戲,練習(xí)if while輸入和輸出,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2019-12-12
  • python項(xiàng)目接入nacos實(shí)現(xiàn)方式

    python項(xiàng)目接入nacos實(shí)現(xiàn)方式

    這篇文章主要介紹了python項(xiàng)目接入nacos實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • 使用Python實(shí)現(xiàn)PDF文檔自動(dòng)化的操作大全(一鍵合并、分割、水印、提取與加密解密)

    使用Python實(shí)現(xiàn)PDF文檔自動(dòng)化的操作大全(一鍵合并、分割、水印、提取與加密解密)

    在職場中,PDF文件因其格式穩(wěn)定、跨平臺(tái)兼容性好而廣泛應(yīng)用,但你有沒有被PDF的這些痛點(diǎn)折磨過:文件零散、編輯受限、合并/分割麻煩和缺乏保護(hù)等,這些重復(fù)、低效的PDF文件管理任務(wù),嚴(yán)重拖慢了你的辦公自動(dòng)化進(jìn)程,所以本文介紹了如何使用Python實(shí)現(xiàn)PDF文檔自動(dòng)化
    2025-11-11
  • Numpy中array數(shù)組對(duì)象的儲(chǔ)存方式(n,1)和(n,)的區(qū)別

    Numpy中array數(shù)組對(duì)象的儲(chǔ)存方式(n,1)和(n,)的區(qū)別

    本文主要介紹了Numpy中array數(shù)組對(duì)象的儲(chǔ)存方式(n,1)和(n,)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

延津县| 辽源市| 会东县| 平罗县| 合肥市| 延长县| 信丰县| 株洲县| 阿克苏市| 罗定市| 万州区| 海门市| 秦安县| 舟山市| 新田县| 千阳县| 铜川市| 上蔡县| 始兴县| 芦山县| 杨浦区| 青浦区| 曲松县| 年辖:市辖区| 叙永县| 文昌市| 遂昌县| 拉孜县| 桂阳县| 含山县| 出国| 娄烦县| 乌苏市| 衡南县| 临安市| 通辽市| 启东市| 东莞市| 泰兴市| 巴中市| 泽普县|