Python實(shí)現(xiàn)批量自動整理文件
為了實(shí)現(xiàn)這樣的小工具,我們先設(shè)想有下面這些功能。
1、可以自定義整理某一個路徑下面的所有需要被整理的文件。
2、默認(rèn)情況下,使用文件后綴作為同一種類文件的文件夾名稱,有其他想法的小伙伴可自行擴(kuò)展。
將使用到的python模塊導(dǎo)入到代碼塊中。
import os # 文件/文件夾應(yīng)用操作 import shutil # 移動文件 import logging # 使用日志logging來打印日志
選擇好需要整理的原始文件目錄。
下面是整理完成后的效果圖,根據(jù)文件類型對各種文件進(jìn)行整理。
在代碼塊中加入日志打印的模塊,這里日志打印選擇的是logging模塊。
logger = logging.getLogger('自動歸納文件') # 日志名稱 logging.basicConfig(format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s') # 日志打印格式 logger.setLevel(logging.DEBUG) # 日志打印級別
下面是文件整理的代碼塊的全部實(shí)現(xiàn)方式,主要部分都加上注釋說明。
dir = input('請輸入需要整理的文件目錄: \n') # 需要整理的文件路徑 if os.path.isdir(dir): logger.info('當(dāng)前目錄[' + dir + ']校驗(yàn)成功!') paths = [] for file_path, dir_names, file_names in os.walk(r'' + dir): for file_name in file_names: try: file_name_path = os.path.join(file_path, file_name) dir_ = file_name.split('.')[1] new_file_name_path = os.path.join(dir, dir_) # 校驗(yàn)新的文件夾是否已經(jīng)存在 if os.path.isdir(new_file_name_path): # 直接移動文件 shutil.move(file_name_path, new_file_name_path) else: # 創(chuàng)建好文件夾后移動文件 os.mkdir(new_file_name_path) shutil.move(file_name_path, new_file_name_path) paths.append(os.path.join(new_file_name_path, file_name)) except: logger.error('[' + file_name_path + ']移動發(fā)生異常,執(zhí)行下一個!') for path in paths: logger.info('移動完成的文件:' + str(path)) else: logger.error('輸入的文件夾或者目錄不存在!')
以上就是自動整理文件的全部代碼塊的實(shí)現(xiàn)部分,使用時依次將代碼塊copy到自己的開發(fā)工具中直接啟動就可。
進(jìn)階
當(dāng)文件在不同路徑下,又該如何實(shí)現(xiàn)批量管理呢,下面是實(shí)現(xiàn)的代碼,可以參考一下
import os import glob import shutil ''' @Author: huny @date: 2020.12.06 @function: 文件整理 ''' class FileType(): def __init__(self): self.filetype = { "圖片": [".jpeg", ".jpg", ".tiff", ".gif", ".bmp", ".png", ".bpg", "svg", ".heif", ".psd"], "視頻": [".avi", ".flv", ".wmv", ".mov", ".mp4", ".webm", ".vob", ".mng", ".qt", ".mpg", ".mpeg", ".3gp", ".mkv"], "音頻": [".aac", ".aa", ".aac", ".dvf", ".m4a", ".m4b", ".m4p", ".mp3", ".msv", ".ogg", ".oga", ".raw", ".vox", ".wav", ".wma"], "文檔": [".oxps", ".epub", ".pages", ".docx", ".doc", ".fdf", ".ods", ".odt", ".pwi", ".xsn", ".xps", ".dotx", ".docm", ".dox", ".rvg", ".rtf", ".rtfd", ".wpd", ".xls", ".xlsx", ".ppt", ".pptx", ".csv", ".pdf", ".md",".xmind"], "壓縮文件": [".a", ".ar", ".cpio", ".iso", ".tar", ".gz", ".rz", ".7z", ".dmg", ".rar", ".xar", ".zip"], "文本": [".txt", ".in", ".out", ".json","xml",".log"], "程序腳本": [".py", ".html5", ".html", ".htm", ".xhtml", ".c", ".cpp", ".java", ".css",".sql"], "可執(zhí)行程序": [".exe",".bat",".lnk"], "字體文件": [".ttf", ".OTF", ".WOFF", ".EOT"] } def JudgeFile(self, pathname): for name, type in self.filetype.items(): if pathname in type: return name return "無法判斷類型文件" class DeskTopOrg(object): def __init__(self): self.filetype = FileType() def Organization(self): filepath = input("請輸入需要整理的文件夾路徑: ") paths = glob.glob(filepath + "/*.*") print('paths-->',paths) for path in paths: try: if not os.path.isdir(path): file = os.path.splitext(path) filename,type = file print('type-->',type) print("filename-->",filename) print('path-->',path) dir_path = os.path.dirname(path) print('dir_path-->',dir_path) savePath = dir_path + '/{}'.format(self.filetype.JudgeFile(type)) print('savePath-->',savePath) if not os.path.exists(savePath): os.mkdir(savePath) shutil.move(path, savePath) else: shutil.move(path, savePath) except FileNotFoundError: pass print("程序執(zhí)行結(jié)束!") if __name__ == '__main__': try: while True: desktopOrg = DeskTopOrg() desktopOrg.Organization() print("---->你的文件已經(jīng)整理完成。") a = input('---->請按回車鍵退出:') if a == '': break except BaseException: print("ERROE:路徑錯誤或有重復(fù)的文檔")
這樣就可以自由的整理你想要整理的路徑了。
到此這篇關(guān)于Python實(shí)現(xiàn)批量自動整理文件的文章就介紹到這了,更多相關(guān)Python自動整理文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
AI人工智能 Python實(shí)現(xiàn)人機(jī)對話
這篇文章主要為大家詳細(xì)介紹了AI人工智能應(yīng)用,本文擬使用Python開發(fā)語言實(shí)現(xiàn)類似于WIndows平臺的“小娜”,,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-11-11python爬取網(wǎng)頁轉(zhuǎn)換為PDF文件
這篇文章主要為大家詳細(xì)介紹了python爬取網(wǎng)頁轉(zhuǎn)換為PDF文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06詳解Django+uwsgi+Nginx上線最佳實(shí)戰(zhàn)
這篇文章主要介紹了Django+uwsgi+Nginx上線最佳實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03修改Python的pyxmpp2中的主循環(huán)使其提高性能
這篇文章主要介紹了修改Python的pyxmpp2中的主循環(huán)使其提高性能,pyxmpp2是Python中使用需XMPP協(xié)議的一個常用工具,要的朋友可以參考下2015-04-04