大家好

突然想到如何用 python 寫一個程式把資料夾所有檔案搬移到另一個資料夾,並且平均分配?

並且遇到重複檔案名稱會重新加上隨機數字做後綴避免重複

主要是有些檔案真的很多

但是又需要保留

但是都放在一個資料夾非常大

難以打開

所以如果可以平均放在資料夾中並且設定一個數量去填滿

啟不美哉?

 

 

import os
import shutil
import random

source_directory = r'C:/Users/MYDIR/Downloads/TMP/FROM/'
put_directory = r'C:/Users/MYDIR/Downloads/TMP/PUT/'
files_per_folder = 10 #每個資料匣最多放幾個
preType = 'C'


folder_counter = 0
file_counter = 0
nowDirCount = 1


# 遍歷源資料夾及其子資料夾中的檔案
for root, dirs, files in os.walk(source_directory):
    for file in files:
    
        orgPath = root + '/' + file
    
        while True:
            nowDirF = preType+('000'+str(nowDirCount))[-3:]
            nowDirP = put_directory + nowDirF
        
            # 檢查是否需要創建新的子資料夾
            if not os.path.exists(nowDirP):
                os.makedirs(nowDirP)
            existing_file_counts = len(os.listdir(nowDirP))
            
            # 目前資料夾檔案超過數量,下一個
            if existing_file_counts >= files_per_folder:
                nowDirCount += 1
                continue
                
                
            newPath = nowDirP + '/' + file
            
            # 如果資料夾中有同名檔案則改檔案名稱
            if os.path.exists(newPath):
                newPath = nowDirP + '/' + file[:-4] + '_' + str(random.randint(1000, 9999)) + file[-4:]
            # 下一步
            break
            
        print("MOVE = ", orgPath, ' TO ', newPath)
        shutil.move(orgPath, newPath)

 

出來的資料夾還可以自訂前面一個單字好分類

大概像這樣

 

原本是想用 chat gpt 幫我寫這一段程式碼
發現 gpt 很難理解我要的意思

所以還是自己寫比較快

而且發現GPT對於複雜問題的理解能力還是不夠好
而且GPT無法判斷他自己是否真的理解描述
只能硬吐答案

如果是人
遇到聽不懂的描述
會問 "哈?"

但是GPT確實還無法思考
他沒有自我
沒辦法跟自己對話說
自己是否真的理解對方的意思

不過如果真的可以的話
那也是相當可怕的事情