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

Python批量實(shí)現(xiàn)文件查找、打包與修改名字

 更新時(shí)間:2025年11月04日 09:56:49   作者:PythonFun  
這篇文章主要為大家詳細(xì)介紹了如何通過Python批量實(shí)現(xiàn)文件查找、打包與修改名字的功能,文中的示例代碼講解詳細(xì),有需要的小伙伴可以進(jìn)行參考

一、問題的由來

剛開學(xué),學(xué)校教務(wù)辦下達(dá)了進(jìn)行畢業(yè)論文抽查的通知。根據(jù)通知的要求,我們需要把指導(dǎo)學(xué)生的論文材料根據(jù)畢業(yè)檔案進(jìn)行整理,每個(gè)學(xué)生的畢業(yè)檔案內(nèi)容如下:

論文抽檢要求主要包括以下要求:

1.重命名論文原文pdf,命名方式與《XX學(xué)院論文信息匯總表》表X列一致

2.生成支撐材料zip文件,命名方式與《XX學(xué)院論文信息匯總表》表Y列一致。

壓縮包內(nèi)含:開題報(bào)告(學(xué)生姓名+開題報(bào)告,word格式)

中期檢查表(學(xué)生姓名+中期檢查表,word)翻譯原文(僅翻譯專業(yè),學(xué)生姓名+翻譯原文,pdf)

3.重命名查重報(bào)告 pdf,命名方式與《XX學(xué)院論文信息匯總表》表Z列一致

以前準(zhǔn)備這些資料時(shí),我都是先打開匯總表,復(fù)制文件名,然后去更改學(xué)生的畢業(yè)論文資料信息,如果只是三四個(gè)人還好說,可是今年我指導(dǎo)了10個(gè)人的論文,每個(gè)學(xué)生我要復(fù)制三個(gè)文件名,一個(gè)個(gè)去改,還要找到壓縮包中要求的支撐材料,打包成指定文件名的zip包,一個(gè)學(xué)生平均花費(fèi)我3分鐘時(shí)間,10個(gè)人就是30分鐘,真的是耗時(shí)費(fèi)力,而且極易出錯(cuò)。怎么能夠快速、準(zhǔn)確地完成這項(xiàng)任務(wù)呢?

二、問題的解決

考慮到這個(gè)操作過程主要是讀取文件夾、查找文件名、重命名文件、壓縮成指定文件名這些操作,而且還是一個(gè)重復(fù)的過程,并且有規(guī)律可循。我又審查了我要處理的文件,雖然文件名中有空格或者+號(hào),同一類文件如論文pdf文件,都有”論文“這個(gè)關(guān)鍵詞,因此可以通過查找關(guān)鍵詞來鎖定文件名,然后進(jìn)行改名等操作。

首先,我先把我指導(dǎo)學(xué)生的信息從學(xué)院匯總表中復(fù)制出來,清除里的格式,單獨(dú)存放為data.xlsx, 如下圖所示。這樣做的目的是讓Python更好地從本地讀取數(shù)據(jù)信息。

data.xlsx

然后,我把準(zhǔn)備好的畢業(yè)生的檔案信息壓縮包解壓,這樣可以看到每一個(gè)文件夾下面都放有一個(gè)畢業(yè)生所有的畢業(yè)論文信息,每些文件夾中都包含有學(xué)生的姓名,我們就通過關(guān)鍵詞姓名來讓程序找到目的文件夾。

接著,我打開AI,描述我們要操作的過程,由于起初我并不知道要打包那三個(gè)文件,所以我在提示詞中是要求建一個(gè)空的zip,我通過拖動(dòng)的方法把指定的文件拖進(jìn)壓縮包。所以,我的提示詞是這樣的,為了準(zhǔn)確讀取數(shù)據(jù),我還把Excel數(shù)據(jù)表貼了上去,這樣便于AI準(zhǔn)確編寫數(shù)據(jù)讀取代碼。:

AI輔助編寫代碼

AI很快就給出了我想要的代碼,而且對(duì)每一行代碼都進(jìn)行了清晰地注釋,并能實(shí)現(xiàn)以下功能:

1. 讀取 Excel 表格中的內(nèi)容;

2. 獲取每位學(xué)生的 姓名、論文名、支撐材料名、查重報(bào)告名;

3.在當(dāng)前目錄下找到以學(xué)生姓名命名的文件夾;

4.學(xué)生論文文件夾中:新建一個(gè)空的 zip 文件,命名為支撐材料名;

5. 查找包含 “論文”和“終稿” 的 pdf,重命名為論文名;

6. 查找包含 “查重報(bào)告” 的 pdf,重命名為查重報(bào)告名。

最終代碼如下:

import os
import pandas as pd
import zipfile
import shutil

# Excel 文件路徑
excel_file = "students.xlsx"   # 替換成你的實(shí)際 Excel 文件名

# 讀取 Excel
df = pd.read_excel(excel_file)

# 當(dāng)前工作目錄
base_dir = os.getcwd()

for _, row in df.iterrows():
    name = row["姓名"]
    thesis_name = row["論文"]
    support_zip = row["支撐材料文件名稱"]
    report_name = row["查重報(bào)告"]

    # 找到學(xué)生文件夾
    student_dir = os.path.join(base_dir, name)
    if not os.path.exists(student_dir):
        print(f"未找到 {name} 的文件夾,跳過。")
        continue

    # 進(jìn)入學(xué)生文件夾
    os.chdir(student_dir)

    # 1. 新建空 zip 文件
    if not os.path.exists(support_zip):
        with zipfile.ZipFile(support_zip, "w") as zf:
            pass
        print(f"已創(chuàng)建 {support_zip}")

    # 2. 遍歷文件,重命名論文和查重報(bào)告
    for file in os.listdir(student_dir):
        lower_file = file.lower()

        # 找論文文件:包含 "論文" 和 "終稿"
        if file.endswith(".pdf") and ("論文" in file or "終稿" in file):
            new_path = os.path.join(student_dir, thesis_name)
            shutil.move(file, new_path)
            print(f"{file} 已重命名為 {thesis_name}")

        # 找查重報(bào)告文件
        elif file.endswith(".pdf") and "查重報(bào)告" in file:
            new_path = os.path.join(student_dir, report_name)
            shutil.move(file, new_path)
            print(f"{file} 已重命名為 {report_name}")

    # 回到上級(jí)目錄
    os.chdir(base_dir)

print("處理完成!")

以上代碼在測(cè)試中,我發(fā)現(xiàn)程序找不到【論文】這個(gè)key,經(jīng)過研判原來是data.xlsx數(shù)據(jù)表中表頭中有論文名稱列,而沒有論文列,造成文件中數(shù)據(jù)與代碼不匹配,所以就報(bào)錯(cuò)了。我把數(shù)據(jù)表中論文名稱列改名為論文,然后運(yùn)行代碼成功。但也發(fā)現(xiàn)了幾個(gè)小問題:

1. 當(dāng)前代碼只能遍歷當(dāng)前包含指定人名的目錄,如果里面還有子目錄就無法遍歷,需要把os.listdir()改為os.walk(),這樣就能找到子目錄里的文件了。

2. 沒有對(duì)包含有指定關(guān)鍵詞的三個(gè)PDF文件進(jìn)行打包重命名,只是生成了一個(gè)空壓縮包文件。

3. 學(xué)生檔案中有兩個(gè)查重報(bào)告,其中有一個(gè)是AIGC的查重報(bào)告,所以改名時(shí)還要排除掉AIGC這個(gè)關(guān)鍵詞。

4. 源代碼中數(shù)據(jù)表名是students.xlsx,改為正確的data.xlsx后,程序就可以成功讀取了。

三、代碼的優(yōu)化

針對(duì)以上問題,我們對(duì)代碼進(jìn)行了優(yōu)化,主要解決以下三個(gè)問題:

1. 利用os.walk()遍歷子目錄,代碼如下:

    for root, dirs, _ in os.walk(base_dir):
        for folder in dirs:
            if name in folder:
                student_dir = os.path.join(root, folder)
                break
        if student_dir:
            break

2. 確定打包文件名中包含:"開題報(bào)告", "中期", "原文"這三個(gè)關(guān)鍵詞,并且不需要改名。因此可以首先建立一個(gè)壓縮包,再遍歷子目錄找到包含三個(gè)關(guān)鍵詞的不同文件,將它們寫入到指定文件名的zip文件中。代碼如下所示

# 關(guān)鍵詞列表,用于支撐材料打包
keywords = ["開題報(bào)告", "中期", "原文"]
# 創(chuàng)建/覆蓋 zip 文件
zip_path = os.path.join(student_dir, support_zip)
with zipfile.ZipFile(zip_path, "w") as zipf:
    # 遍歷學(xué)生文件夾及子文件夾
    for root, _, files in os.walk(student_dir):
        for file in files:
            if any(keyword in file for keyword in keywords):
                file_path = os.path.join(root, file)
                # 添加到 zip,保留相對(duì)路徑
                arcname = os.path.relpath(file_path, student_dir)
                zipf.write(file_path, arcname)
                print(f"{file} 已加入 {support_zip}")

3. 排除包含AIGC關(guān)鍵詞的查重報(bào)告,可以通過if判斷來實(shí)現(xiàn)。

# 3. 重命名查重報(bào)告文件(排除 AIGC)
for root, _, files in os.walk(student_dir):
    for file in files:
        if file.endswith(".pdf") and "查重報(bào)告" in file and "AIGC" not in file:
            file_path = os.path.join(root, file)
            new_path = os.path.join(student_dir, report_name)
            shutil.move(file_path, new_path)
            print(f"{file} 已重命名為 {report_name}")

四、代碼展示

最終,我們借助AI,自定義了一個(gè)60余行Python代碼實(shí)現(xiàn)了畢業(yè)論文的全自動(dòng)歸檔,把30分鐘的工作任務(wù)壓縮到3秒鐘來完成,工作效率和準(zhǔn)確度成倍提升。最終代碼如下:

import os
import pandas as pd
import zipfile
import shutil

# Excel 文件路徑
excel_file = "data.xlsx"   # 替換成你的實(shí)際 Excel 文件名

# 讀取 Excel
df = pd.read_excel(excel_file)

# 當(dāng)前工作目錄
base_dir = os.getcwd()

# 關(guān)鍵詞列表,用于支撐材料打包
keywords = ["開題報(bào)告", "中期", "原文"]

for _, row in df.iterrows():
    name = row["姓名"]
    thesis_name = row["論文"]
    support_zip = row["支撐材料文件名稱"]
    report_name = row["查重報(bào)告"]

    # 查找包含學(xué)生姓名的文件夾(遞歸)
    student_dir = None
    for root, dirs, _ in os.walk(base_dir):
        for folder in dirs:
            if name in folder:
                student_dir = os.path.join(root, folder)
                break
        if student_dir:
            break

    if not student_dir:
        print(f"未找到包含 {name} 的文件夾,跳過。")
        continue

    # 1. 打包支撐材料文件
    zip_path = os.path.join(student_dir, support_zip)
    with zipfile.ZipFile(zip_path, "w") as zipf:
        for root, _, files in os.walk(student_dir):
            for file in files:
                if any(keyword in file for keyword in keywords):
                    file_path = os.path.join(root, file)
                    arcname = os.path.relpath(file_path, student_dir)  # 保留相對(duì)路徑
                    zipf.write(file_path, arcname)
                    print(f"{file} 已加入 {support_zip}")
    print(f"{support_zip} 已生成/覆蓋完成。")

    # 2. 重命名論文文件
    for root, _, files in os.walk(student_dir):
        for file in files:
            if file.endswith(".pdf") and ("論文" in file or "終稿" in file):
                file_path = os.path.join(root, file)
                new_path = os.path.join(student_dir, thesis_name)
                shutil.move(file_path, new_path)
                print(f"{file} 已重命名為 {thesis_name}")

    # 3. 重命名查重報(bào)告文件(排除 AIGC)
    for root, _, files in os.walk(student_dir):
        for file in files:
            if file.endswith(".pdf") and "查重報(bào)告" in file and "AIGC" not in file:
                file_path = os.path.join(root, file)
                new_path = os.path.join(student_dir, report_name)
                shutil.move(file_path, new_path)
                print(f"{file} 已重命名為 {report_name}")

print("全部學(xué)生處理完成!")

五、結(jié)語(yǔ)

1. 對(duì)于一些批量的、有規(guī)律的文件操作包括:查找、改名、移動(dòng)、刪除、創(chuàng)建、打包等操作均可以使用Python來替代人工來解決。解決問題的關(guān)鍵是準(zhǔn)確向人工智能工具描述你要做的工作,預(yù)期要達(dá)到什么目標(biāo),涉及的文件名、路徑等信息都要明確給出,提升代碼的準(zhǔn)確率和適用性。

2. 即使是你再準(zhǔn)確描述,可能由于實(shí)際情況的復(fù)雜性,運(yùn)行代碼時(shí)也難免出錯(cuò),或者出現(xiàn)執(zhí)行不到位、不全面的情況,此時(shí)要認(rèn)真查看報(bào)錯(cuò)信息,明確出錯(cuò)的代碼位置,通過人工智能輔助排查、個(gè)人獨(dú)立判斷來解決。

3.AI 的輔助代碼生成功能更強(qiáng),它會(huì)把執(zhí)行步驟清楚地注釋出來 ,結(jié)構(gòu)化的編程過程大大提升了編程者的邏輯思維和解決問題的能力,我們可以學(xué)習(xí)它代碼編寫的邏輯為我們獨(dú)立完成任務(wù)積累寶貴的經(jīng)驗(yàn)。

到此這篇關(guān)于Python批量實(shí)現(xiàn)文件查找、打包與修改名字的文章就介紹到這了,更多相關(guān)Python文件批量處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python字典中g(shù)et()函數(shù)的基本用法實(shí)例

    python字典中g(shù)et()函數(shù)的基本用法實(shí)例

    在字典內(nèi)置的方法中,想說的方法為get,這個(gè)方法是通過鍵來獲取相應(yīng)的值,但是如果相應(yīng)的鍵不存在則返回None,這篇文章主要給大家介紹了關(guān)于python字典中g(shù)et()函數(shù)的基本用法,需要的朋友可以參考下
    2022-03-03
  • Pandas檢測(cè)None和Nan的實(shí)現(xiàn)方式

    Pandas檢測(cè)None和Nan的實(shí)現(xiàn)方式

    文章總結(jié):Pandas中None(空值)和NaN(非數(shù))需區(qū)分檢測(cè),isnull/isna用于識(shí)別缺失值,math.isnan檢測(cè)NaN,is運(yùn)算符或==檢測(cè)None,兩者概念不同,需根據(jù)場(chǎng)景選擇合適方法
    2025-09-09
  • 詳解Python中的from..import絕對(duì)導(dǎo)入語(yǔ)句

    詳解Python中的from..import絕對(duì)導(dǎo)入語(yǔ)句

    絕對(duì)導(dǎo)入其實(shí)非常簡(jiǎn)單,即是用from語(yǔ)句在import前指明頂層package名,下面我們通過兩個(gè)例子來詳解Python中的from..import絕對(duì)導(dǎo)入語(yǔ)句
    2016-06-06
  • python模擬新浪微博登陸功能(新浪微博爬蟲)

    python模擬新浪微博登陸功能(新浪微博爬蟲)

    使用Python編寫一個(gè)模擬登陸的程序,利用這個(gè)原來可以設(shè)計(jì)自己的爬蟲,大家參考使用吧
    2013-12-12
  • pandas分批讀取大數(shù)據(jù)集教程

    pandas分批讀取大數(shù)據(jù)集教程

    這篇文章主要介紹了pandas分批讀取大數(shù)據(jù)集教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 500行Python代碼打造刷臉考勤系統(tǒng)

    500行Python代碼打造刷臉考勤系統(tǒng)

    本文給大家分享通過500行Python代碼打造刷臉考勤系統(tǒng),代碼超級(jí)簡(jiǎn)單,感興趣的朋友跟隨小編一起看看吧
    2019-06-06
  • 用Python將mysql數(shù)據(jù)導(dǎo)出成json的方法

    用Python將mysql數(shù)據(jù)導(dǎo)出成json的方法

    今天小編就為大家分享一篇用Python將mysql數(shù)據(jù)導(dǎo)出成json的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Python處理PPT文件的實(shí)用知識(shí)點(diǎn)總結(jié)

    Python處理PPT文件的實(shí)用知識(shí)點(diǎn)總結(jié)

    python是一門很強(qiáng)大的語(yǔ)言,因?yàn)橛兄S富的第三方庫(kù),所以可以說Python是無所不能的,下面這篇文章主要給大家介紹了關(guān)于用Python提取PPT中圖片的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • 圣誕節(jié)教你用Python繪制愛心圣誕樹

    圣誕節(jié)教你用Python繪制愛心圣誕樹

    圣誕節(jié)快要到了,心血來潮,寫段代碼給大家介紹下基于Python繪制愛心圣誕樹的方法,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-12-12
  • 如何使用Python在excel中創(chuàng)建柱狀圖

    如何使用Python在excel中創(chuàng)建柱狀圖

    這篇文章主要給大家介紹了關(guān)于如何使用Python在excel中創(chuàng)建柱狀圖的相關(guān)資料,包括導(dǎo)入模塊、新建工作簿、創(chuàng)建圖表、設(shè)置數(shù)據(jù)范圍、添加標(biāo)題和數(shù)據(jù)系列、以及保存圖表和工作簿,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04

最新評(píng)論

越西县| 安阳市| 德阳市| 东港市| 策勒县| 武乡县| 兴文县| 出国| 郧西县| 阿鲁科尔沁旗| 故城县| 兴化市| 恩施市| 蒲江县| 甘南县| 海兴县| 佛冈县| 浦江县| 北海市| 天峻县| 繁昌县| 莫力| 芦山县| 桦川县| 商南县| 沙洋县| 德保县| 林州市| 龙川县| 绥德县| 黑山县| 石柱| 辛集市| 安徽省| 奈曼旗| 池州市| 宜城市| 海阳市| 涿鹿县| 青浦区| 巨鹿县|