首頁 > 軟體

Python指令碼實現一鍵自動整理辦公檔案

2022-02-16 10:00:11

導語:

舉例:Python做一個根據字尾名整理檔案的工具,先來看看效果:

自動整理前:

自動整理後:

這樣看起來就好很多了。

1.準備

開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以存取這篇文章:python Windows最新版本安裝教學

我們只需要修改原始碼主程式中呼叫 auto_organize函數的引數即可完成對對應資料夾的整理,比如我想整理  C:Users83493Downloads 資料夾:

if __name__ == "__main__":
    auto_organize(r"C:Users83493Downloads")

如上所示:修改程式碼第61行的資料夾地址即可。修改完成後執行該指令碼:

python auto_files.py

就能瞬間完成對指定資料夾的整理,極其方便。

2.原理

這份程式碼的原理很簡單,為了整理這些檔案,我們要遍歷當前指定的資料夾:如果是資料夾則跳過,如果是檔案則檢測字尾,分類到對應的資料夾中。資料夾名字及其對應的檔案字尾如下:

DIRECTORIES = {
    "圖片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg",
               ".heif", ".psd"],
    "視訊": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng",
               ".qt", ".mpg", ".mpeg", ".3gp", ".mkv"],
    "檔案": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods",
                  ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox",
                  ".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt",
                  "pptx",".csv",".pdf"],
    "壓縮檔案": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z",
                 ".dmg", ".rar", ".xar", ".zip"],
    "影音": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3",
              ".msv", "ogg", "oga", ".raw", ".vox", ".wav", ".wma"],
    "文字": [".txt", ".in", ".out"],
    "程式設計": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],
    "可執行程式": [".exe"],
}

接下來是自動整理的部分程式碼,先遍歷指定的資料夾,識別字尾並分類到對應的資料夾中。

for entry in os.scandir(dirval):
    if entry.is_dir():
        # 如果是資料夾則跳過
        continue
    file_path = Path(dirval + "\" + entry.name)
    file_format = file_path.suffix.lower()
    # 避免字尾大小寫判斷問題,全轉為小寫
    if file_format in FILE_FORMATS:
        directory_path = Path(dirval + "\" + FILE_FORMATS[file_format])
        directory_path.mkdir(exist_ok=True)
        file_path.rename(directory_path.joinpath(entry.name))

還有出現不存在在我們字典裡的字尾的情況,把它們分類到名為 其他檔案 的資料夾中:

try:
    os.mkdir(dirval + "\" +"其他檔案")
except:
    pass
 
for dir in os.scandir(dirval):
    try:
        if dir.is_dir():
            # 刪除空資料夾
            os.rmdir(dir)
        else:
            temp = str(Path(dir)).split('\')
            # 分割檔案路徑
            path = '\'.join(temp[:-1])
            print(path + '\其他檔案\' + str(temp[-1]))
            os.rename(str(Path(dir)), path + '\其他檔案\' + str(temp[-1]))
    except:
        pass

3.自定義整理

如果你並不想按照設定好的檔案整理,希望能自定義地將某些特定字尾的檔案放到另一個資料夾,比如 .py 檔案統一收納到“Python指令碼”資料夾中,你可以這麼改 DIRECTORIES 變數:

DIRECTORIES = {
    # ......
    "程式設計": [".py",".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],
    # ......
}

改動後:

DIRECTORIES = {
    # ......
    "程式設計": [".html5", ".html", ".htm", ".xhtml",".c",".cpp",".java",".css"],
    "Python指令碼": [".py"],
    # ......
}

我們可以按照這個方法,自定義收納那些你需要整理收納的檔案格式。

如果只想對 DIRECTORIES 變數裡那些字尾的檔案進行整理,不屬於這些字尾的檔案則不進行整理,不需要放到“其他檔案”目錄下,此時要怎麼做?

很簡單,你只需要刪除以下部分程式碼就可以完成這個功能:

try:
        os.mkdir(dirval + "\" +"其他檔案")
    except:
        pass
 
    for dir in os.scandir(dirval):
        try:
            if dir.is_dir():
                # 刪除空資料夾
                os.rmdir(dir)
            else:
                temp = str(Path(dir)).split('\')
                # 分割檔案路徑
                path = '\'.join(temp[:-1])
                print(path + '\其他檔案\' + str(temp[-1]))
                os.rename(str(Path(dir)), path + '\其他檔案\' + str(temp[-1]))
        except:
            pass
# ......

小編覺得這樣就很方便。

到此這篇關於Python實現指令碼一鍵自動整理辦公檔案的文章就介紹到這了,更多相關Python實現自動整理檔案內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com