用 Python 批量把文件複製到另一

0 前言

大概是三個月前,有個人找我說要我幫忙寫幾行程式碼,功能是把一個文件夾裡面的所有文件拆分成 200 個文件一個文件夾,很簡單的。

我理解了之後,覺得還是挺簡單的,花了半個小時寫出來了,程式碼也不多,程式碼和思路都可以分享一下。

1 環境說明

Win10 系統下 Python3,編譯器是 Pycharm。

需要安裝 shutil 這個第三方庫,直接 pip install shutil 就可以了。

2 程式碼

先導入需要用到的庫,os 是用來切換路徑和創建文件夾的。

shutil 是用來複制黏貼文件的

import os  from shutil import copy

i 用來計算文件數量,當 i 是 200 的倍數時,k 會 +1;k 用來計算新建文件夾的數量,方便創建文件夾。

save_dir 是想把複製出來的文件存放在的路徑

# i 用來計算文件數量,k 用來計算新建文件夾的數量  i = 0  k = 0    #  想保存到的根路徑  save_dir = r'F:666'  #  如果目錄不存在,則創建  if not os.path.isdir(save_dir):      os.makedirs(save_dir)

dir_name 是新的文件夾的命名;file_path 是想拆分的文件夾所在路徑,也就是一大堆文件所在的路徑。

os.listdir(file_path) 是獲取指定路徑下包含的文件或文件夾列表,在 Unix, Windows 下使用。

#  想保存的名字  dir_name = "junzi"    #  想拆分的文件夾所在路徑  file_path = r'F:ALL'    #  獲取 file_path 下的文件和文件夾列表  #  因為 file_path 裡面沒有文件夾,所以不處理有文件夾的情況  pathDir = os.listdir(file_path)

獲取到了列表,那就一個一個進行遍歷。0 是 200 的倍數,所以一開始 k 的值會 +1 。

allDir 是文件的名字+後綴名。from_path 就是當前這個被遍歷出來的文件的完整路徑,to_path是這個文件要複製到的路徑。

接著 copy(from_path, to_path) 完成複製黏貼,最後 i 自增1.

for allDir in pathDir:      if( (i%200) == 0):          print("200 的倍數,新建一個文件夾")          k += 1        print(allDir)      from_path = os.path.join(file_path, allDir)      to_path = save_dir + "\" + dir_name + str(k)        #  如果 to_path 目錄不存在,則創建      if not os.path.isdir(to_path):          os.makedirs(to_path)      copy(from_path, to_path)      i += 1

3 相關說明

shutil 的 copy() 是複製到一個新的地方,創建時間、修改時間、訪問時間都是新的,copy2() 則是會創建時間、修改時間、訪問時間這些也複製過去。

Tags: