0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python自動(dòng)化腳本辦公-文件整理

麥辣雞腿堡 ? 來源:Python都知道 ? 作者:了不起 ? 2023-07-20 09:49 ? 次閱讀

今天講解文件整理腳本的實(shí)現(xiàn)過程。這是一個(gè)很有用的技能,可以幫助你管理你的電腦上的各種文件。需求如下:

  • 需求內(nèi)容:給定一個(gè)打算整理的文件夾目錄,這個(gè)腳本可以將該目錄下的所有文件都揪出來,并且根據(jù)后綴名歸類到不同的文件夾里。
  • python能力:使用python的內(nèi)置模塊os和shutil來操作文件和目錄,使用glob模塊來匹配文件名,使用with語句來打開和關(guān)閉文件。
  • 實(shí)現(xiàn)步驟:
    • 導(dǎo)入需要的模塊
    • 定義要整理的目錄和要?jiǎng)?chuàng)建的子目錄
    • 遍歷目錄下的所有文件,獲取文件名和后綴名
    • 根據(jù)后綴名判斷文件屬于哪個(gè)子目錄,如果不存在則創(chuàng)建
    • 使用shutil模塊的move函數(shù)將文件移動(dòng)到對(duì)應(yīng)的子目錄
    • 打印完成信息

教程面對(duì)的是小白級(jí)別的讀者,所以我會(huì)盡量用簡單明了的語言來解釋每一行代碼的作用,并且給出完整的代碼示例。我希望你能跟著我一起學(xué)習(xí),并且在自己的電腦上運(yùn)行和測試這個(gè)腳本。

導(dǎo)入python的內(nèi)置模塊

首先,我們需要導(dǎo)入一些python的內(nèi)置模塊,它們可以幫助我們操作文件和目錄。os模塊提供了一些基本的文件系統(tǒng)功能,比如獲取文件路徑,創(chuàng)建和刪除目錄等。shutil模塊提供了一些高級(jí)的文件操作功能,比如復(fù)制和移動(dòng)文件等。glob模塊可以讓我們用通配符來匹配文件名,比如*.txt可以匹配所有后綴名為txt的文件。with語句可以讓我們方便地打開和關(guān)閉文件,不用擔(dān)心忘記關(guān)閉或者出現(xiàn)異常。下面是導(dǎo)入模塊的代碼:

# 導(dǎo)入需要的模塊
import os
import shutil
import glob

定義要整理的目錄和要?jiǎng)?chuàng)建的子目錄

接下來,我們需要定義要整理的目錄和要?jiǎng)?chuàng)建的子目錄。我們假設(shè)要整理的目錄是D:test,里面有各種類型的文件,比如文本文件,圖片文件,音頻文件等。我們想要把這些文件按照后綴名歸類到不同的子目錄里,比如txt文件放到D:testtxt,jpg文件放到D:testjpg,mp3文件放到D:testmp3等。我們可以用一個(gè)字典來存儲(chǔ)這些子目錄的信息,鍵是后綴名,值是對(duì)應(yīng)的子目錄路徑。下面是定義目錄的代碼:

# 定義要整理的目錄和要?jiǎng)?chuàng)建的子目錄
source_dir = "D:test" # 要整理的目錄
sub_dirs = { # 子目錄信息
    ".txt": "D:testtxt",
    ".jpg": "D:testjpg",
    ".mp3": "D:testmp3"
}

遍歷目錄下的所有文件,獲取文件名和后綴名

然后,我們需要遍歷要整理的目錄下的所有文件,獲取文件名和后綴名。我們可以用os模塊的listdir函數(shù)來獲取目錄下的所有文件和子目錄,然后用os模塊的path.splitext函數(shù)來分割文件名和后綴名。我們還需要判斷是否是文件,因?yàn)閘istdir函數(shù)會(huì)返回子目錄,我們不需要處理它們。我們可以用os模塊的path.isfile函數(shù)來判斷是否是文件。下面是遍歷目錄的代碼:

# 遍歷目錄下的所有文件,獲取文件名和后綴名
for item in os.listdir(source_dir): # 遍歷目錄
    if os.path.isfile(os.path.join(source_dir, item)): # 判斷是否是文件
        file_name, file_ext = os.path.splitext(item) # 分割文件名和后綴名
        print(file_name, file_ext) # 打印文件名和后綴名

根據(jù)后綴名判斷文件屬于哪個(gè)子目錄

接著,我們需要根據(jù)后綴名判斷文件屬于哪個(gè)子目錄,如果不存在則創(chuàng)建。我們可以用字典的get方法來根據(jù)鍵獲取值,如果鍵不存在則返回None。我們可以用os模塊的path.exists函數(shù)來判斷子目錄是否存在,如果不存在則用os模塊的makedirs函數(shù)來創(chuàng)建。下面是判斷和創(chuàng)建子目錄的代碼:

# 根據(jù)后綴名判斷文件屬于哪個(gè)子目錄,如果不存在則創(chuàng)建
        sub_dir = sub_dirs.get(file_ext) # 根據(jù)后綴名獲取子目錄路徑
        if sub_dir: # 如果子目錄路徑存在
            if not os.path.exists(sub_dir): # 如果子目錄不存在
                os.makedirs(sub_dir) # 創(chuàng)建子目錄
                print(f"Created {sub_dir}") # 打印創(chuàng)建信息

將文件移動(dòng)到對(duì)應(yīng)的子目錄

接下來,我們需要使用shutil模塊的move函數(shù)將文件移動(dòng)到對(duì)應(yīng)的子目錄。我們需要提供源文件路徑和目標(biāo)文件路徑作為參數(shù)。我們可以用os模塊的path.join函數(shù)來拼接路徑。下面是移動(dòng)文件的代碼:

# 使用shutil模塊的move函數(shù)將文件移動(dòng)到對(duì)應(yīng)的子目錄
            source_file = os.path.join(source_dir, item) # 源文件路徑
            target_file = os.path.join(sub_dir, item) # 目標(biāo)文件路徑
            shutil.move(source_file, target_file) # 移動(dòng)文件
            print(f"Moved {source_file} to {target_file}") # 打印移動(dòng)信息

打印完成信息

最后,我們需要打印完成信息,告訴用戶整理工作已經(jīng)完成。下面是打印完成信息的代碼:

# 打印完成信息
print("Done!")

這樣,我們就完成了一個(gè)簡單的文件整理腳本。完整的代碼如下:

# 導(dǎo)入需要的模塊
import os
import shutil
import glob

# 定義要整理的目錄和要?jiǎng)?chuàng)建的子目錄
source_dir = "D:	est" # 要整理的目錄
sub_dirs = { # 子目錄信息
    ".txt": "D:	est	xt",
    ".jpg": "D:	estjpg",
    ".mp3": "D:	estmp3"
}

# 遍歷目錄下的所有文件,獲取文件名和后綴名
for item in os.listdir(source_dir): # 遍歷目錄
    if os.path.isfile(os.path.join(source_dir, item)): # 判斷是否是文件
        file_name, file_ext = os.path.splitext(item) # 分割文件名和后綴名
        print(file_name, file_ext) # 打印文件名和后綴名

        # 根據(jù)后綴名判斷文件屬于哪個(gè)子目錄,如果不存在則創(chuàng)建
        sub_dir = sub_dirs.get(file_ext) # 根據(jù)后綴名獲取子目錄路徑
        if sub_dir: # 如果子目錄路徑存在
            if not os.path.exists(sub_dir): # 如果子目錄不存在
                os.makedirs(sub_dir) # 創(chuàng)建子目錄
                print(f"Created {sub_dir}") # 打印創(chuàng)建信息

            # 使用shutil模塊的move函數(shù)將文件移動(dòng)到對(duì)應(yīng)的子目錄
            source_file = os.path.join(source_dir, item) # 源文件路徑
            target_file = os.path.join(sub_dir, item) # 目標(biāo)文件路徑
            shutil.move(source_file, target_file) # 移動(dòng)文件
            print(f"Moved {source_file} to {target_file}") # 打印移動(dòng)信息

# 打印完成信息
print("Done!")

如果你在自己的電腦上運(yùn)行這個(gè)腳本,你會(huì)看到類似下面的輸出:

test1 .txt
test2 .jpg
test3 .mp3
Created D:testtxt
Moved D:testtest1.txt to D:testtxttest1.txt
Created D:testjpg
Moved D:testtest2.jpg to D:testjpgtest2.jpg
Created D:testmp3
Moved D:testtest3.mp3 to D:testmp3test3.mp3
Done!
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 自動(dòng)化
    +關(guān)注

    關(guān)注

    28

    文章

    5438

    瀏覽量

    78912
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    557

    瀏覽量

    24642
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4759

    瀏覽量

    84296
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    介紹10個(gè)Python自動(dòng)化腳本

    在這個(gè)自動(dòng)化時(shí)代,我們有很多重復(fù)無聊的工作要做。想想這些你不再需要一次又一次地做的無聊的事情,讓它自動(dòng)化,讓你的生活更輕松。那么在本文中,我將向您介紹 10 個(gè) Python 自動(dòng)化
    發(fā)表于 10-17 09:27 ?915次閱讀

    10個(gè)Python腳本來自動(dòng)化你的日常任務(wù)

    今天浩道跟大家分享幾個(gè)關(guān)于python自動(dòng)化日常工作的實(shí)用案例腳本!
    發(fā)表于 10-25 09:04 ?700次閱讀

    10個(gè)殺手級(jí)的Python自動(dòng)化腳本

    今天浩道跟大家分享10個(gè)日常工作中用到的python自動(dòng)化腳本。讓你感受一番python簡單強(qiáng)大之處!
    發(fā)表于 11-28 11:07 ?659次閱讀

    python自動(dòng)化控制設(shè)備 精選資料分享

    python自動(dòng)化控制設(shè)備,辛辛苦苦讀個(gè)大學(xué)或者研究生誰不想每天早九晚五呢?誰不想天天坐辦公室呢?普通本科機(jī)械設(shè)計(jì)制造及其自動(dòng)化專業(yè),本科期間參加過高數(shù)、數(shù)學(xué)建模、機(jī)器人、數(shù)控、無碳小
    發(fā)表于 07-19 07:00

    自動(dòng)化測試腳本開發(fā)技巧

    開發(fā)自動(dòng)化測試腳本的技巧和心得軟件測試 增量式調(diào)試腳本 錄制測試腳本,和其他的軟件開發(fā)成果一樣,會(huì)變得非常大。為了可以成功的回放,需要調(diào)試幾百行的代碼,為了參數(shù)
    發(fā)表于 03-26 16:24 ?53次下載

    iOS自動(dòng)化打包腳本

    iOS自動(dòng)化打包腳本,地址:(https://github.com/hades0918/ipapy) iOS項(xiàng)目自動(dòng)打包腳本 1.腳本
    發(fā)表于 10-12 16:47 ?0次下載

    Python】如何將Python腳本打包成exe可執(zhí)行文件

    Python實(shí)用技巧】如何將Python腳本打包成exe可執(zhí)行文件
    的頭像 發(fā)表于 08-18 12:40 ?1.8w次閱讀
    【<b class='flag-5'>Python</b>】如何將<b class='flag-5'>Python</b><b class='flag-5'>腳本</b>打包成exe可執(zhí)行<b class='flag-5'>文件</b>

    云測試自動(dòng)化中的Python

      用于測試的編程需要與開發(fā)應(yīng)用程序的編程不同的方法。如果你想要一種專門用于測試編碼的簡單而精簡的語言,Python 是一個(gè)不錯(cuò)的選擇。Python 測試自動(dòng)化框架為驗(yàn)證、數(shù)據(jù)生成和腳本
    的頭像 發(fā)表于 12-09 14:53 ?765次閱讀

    10個(gè)殺手級(jí)的Python自動(dòng)化腳本分享

    重復(fù)性任務(wù)總是耗時(shí)且無聊,想一想你想要一張一張地裁剪 100 張照片或 Fetch API、糾正拼寫和語法等工作,所有這些任務(wù)都很耗時(shí),為什么不自動(dòng)化它們呢?在今天的文章中,我將與你分享 10 個(gè) Python [自動(dòng)化
    的頭像 發(fā)表于 01-06 15:34 ?700次閱讀

    分享10個(gè)實(shí)用的Python自動(dòng)化腳本

    重復(fù)性任務(wù)總是耗時(shí)且無聊,想一想你想要一張一張地裁剪 100 張照片或 Fetch API、糾正拼寫和語法等工作,所有這些任務(wù)都很耗時(shí),為什么不自動(dòng)化它們呢?在今天的文章中,我將與你分享 10 個(gè) Python 自動(dòng)化
    的頭像 發(fā)表于 01-21 15:58 ?1286次閱讀

    使用Python腳本實(shí)現(xiàn)自動(dòng)化運(yùn)維任務(wù)

    許多運(yùn)維工程師會(huì)使用 Python 腳本來自動(dòng)化運(yùn)維任務(wù)。Python 是一種流行的編程語言,具有豐富的第三方庫和強(qiáng)大的自動(dòng)化能力,適用于許多不同的領(lǐng)域。
    的頭像 發(fā)表于 04-08 10:36 ?1582次閱讀

    Facebook群組自動(dòng)化python – 網(wǎng)絡(luò)自動(dòng)化

    電子發(fā)燒友網(wǎng)站提供《Facebook群組自動(dòng)化python – 網(wǎng)絡(luò)自動(dòng)化.zip》資料免費(fèi)下載
    發(fā)表于 07-05 14:26 ?0次下載
    Facebook群組<b class='flag-5'>自動(dòng)化</b><b class='flag-5'>python</b> – 網(wǎng)絡(luò)<b class='flag-5'>自動(dòng)化</b>

    modelsim自動(dòng)化仿真實(shí)驗(yàn) 利用腳本實(shí)現(xiàn)modelsim自動(dòng)化仿真

    大家好!今天給大家?guī)淼氖莔odelsim自動(dòng)化仿真程序。我們在代碼編寫完成時(shí),通常都需要先進(jìn)行仿真,然后上板實(shí)驗(yàn)。但是如果我們每次仿真都要去新建一個(gè)工程,添加.v文件以及testbench文件
    的頭像 發(fā)表于 07-19 10:10 ?1533次閱讀
    modelsim<b class='flag-5'>自動(dòng)化</b>仿真實(shí)驗(yàn) 利用<b class='flag-5'>腳本</b>實(shí)現(xiàn)modelsim<b class='flag-5'>自動(dòng)化</b>仿真

    keil自動(dòng)化編譯腳本

    這是一個(gè) keil 的自動(dòng)化編譯腳本,可被其他腳本或程序調(diào)用,接收參數(shù)并按參數(shù)編譯 keil 工程,而不必打開 keil 軟件,實(shí)現(xiàn)程序上的自動(dòng)化
    的頭像 發(fā)表于 10-16 17:04 ?1575次閱讀
    keil<b class='flag-5'>自動(dòng)化</b>編譯<b class='flag-5'>腳本</b>

    如何使用Python編寫腳本來自動(dòng)發(fā)送郵件

    Python是一種非常流行的編程語言,可以用于多種用途,包括自動(dòng)化任務(wù)。其中一個(gè)常見的自動(dòng)化任務(wù)是自動(dòng)發(fā)送郵件。在本文中,我們將介紹如何使用Pyth
    的頭像 發(fā)表于 12-07 11:36 ?1223次閱讀