python搜索指定類型文件以及批量移動文件程序詳解
搜索文件並移動的python程序
使用python寫一個程序,其功能滿足:可以搜索指定目錄下的某類型的文件,並可以移動到指定的目錄。
1.示例文件及路徑準備
作為示例,在D盤中放一個名為pic1的文件夾,在該文件夾中放入兩個png圖片,並在pic1內再創建一個文件夾,裡邊也隨便放兩張png圖片。如圖所示。
在D盤的ABC文件夾中,創建一個名為pic2的文件夾。
本程序要求:搜索目錄"D://pic1"下的所有文件擴展名為png的圖片。並將其全部移動至"D://ABC/pic2"目錄下。
2.代碼示例
分別定義一個搜索函數和一個批量移動函數。
搜索函數需要傳入的參數為root:要搜索的目錄;target為目標文件類型(即擴展名)。
搜索函數輸出 由目標文件path+文件名構成的列表。
批量移動函數傳入的file_list參數是一個列表,形如搜索函數的輸出結果,元素為帶有path的文件名。dest為需要移動到的目錄。
import os, shutil file_list = [] # 搜索函數 def search_file(root, target): for file in os.listdir(root): path = root try: path = path + os.sep + file if os.path.isdir(path): search_file(path, target) else: if file.split('.')[-1] == target: file_list.append(path) except PermissionError as e: print(e) return file_list # 批量移動函數 def move_file(file_list, dest): for file in file_list: try: shutil.move(file, dest) except shutil.Error as e: print(e) # 寫入目標參數root, def main(): root = "D:\\pic1" target = "png" dest_dir = "D:\\ABC\\pic2" result = search_file(root, target) print(result) move_file(result, dest_dir) if __name__ == '__main__': main()
如圖,目標文件被成功搜索出並轉移:
- 其中搜索函數需要用到遞歸的寫法,對文件夾中的不定數的文件夾進行遍歷。
- 且在其中使用到瞭異常處理的寫法,是為瞭避免遇到不可訪問的系統文件夾,導致程序運行中斷。(除C盤外,這樣的文件夾通常不會在二級中,比如在D盤的根目錄下可能會有。這裡的異常處理寫法可以有效解決該問題。)
3.命令行寫法
將上述代碼改寫文能在命令行傳參、調用的形式。
首先將目標文件放回原路徑,放好。
import sys import os, shutil file_list = [] # 定義一個搜索功能的函數 def search_file(root, file_name): for file in os.listdir(root): path = root try: path = path + os.sep + file if os.path.isdir(path): search_file(path, file_name) else: if file.split('.')[-1] == file_name: file_list.append(path) except PermissionError: pass return file_list def move_file(file_list, dest): for file in file_list: shutil.move(file, dest) def main(argv): root = argv[1] target = argv[2] dest_dir = argv[3] result = search_file(root, target) print(result) move_file(result, dest_dir) if __name__ == '__main__': main(sys.argv)
打開cmd,目錄調整好後,輸入py文件名(這裡為demo.py)及依次傳入三個參數。
即執行命令:
代碼成功運行,目標文件位置被更改。
總結
到此這篇關於python搜索指定類型文件以及批量移動文件程序詳解的文章就介紹到這瞭,更多相關python搜索指定類型文件內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 基於python編寫的shell腳本詳細講解
- Python文件目錄操作常用模塊的使用詳解
- python 實現百度網盤非會員上傳超過500個文件的方法
- Python3如何將源目錄中的圖片用MD5命名並可以設定目標目錄
- 用python刪除文件夾中的重復圖片(圖片去重)