0 前言
大概是三個(gè)月前,有個(gè)人找我說要我?guī)兔憥仔写a,功能是把一個(gè)文件夾里面的所有文件拆分成 200 個(gè)文件一個(gè)文件夾,很簡(jiǎn)單的。
我理解了之后,覺得還是挺簡(jiǎn)單的,花了半個(gè)小時(shí)寫出來了,代碼也不多,代碼和思路都可以分享一下。
1 環(huán)境說明
Win10 系統(tǒng)下 Python3,編譯器是 Pycharm。
需要安裝 shutil 這個(gè)第三方庫,直接 pip install shutil 就可以了。
2 代碼
先導(dǎo)入需要用到的庫,os 是用來切換路徑和創(chuàng)建文件夾的。
shutil 是用來復(fù)制黏貼文件的
import?os
from?shutil?import?copy
i 用來計(jì)算文件數(shù)量,當(dāng) i 是 200 的倍數(shù)時(shí),k 會(huì) +1;k 用來計(jì)算新建文件夾的數(shù)量,方便創(chuàng)建文件夾。
save_dir 是想把復(fù)制出來的文件存放在的路徑
#?i?用來計(jì)算文件數(shù)量,k?用來計(jì)算新建文件夾的數(shù)量
i?=?0
k?=?0
#??想保存到的根路徑
save_dir?=?r'F:\666'
#??如果目錄不存在,則創(chuàng)建
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?下的文件和文件夾列表
#??因?yàn)?file_path?里面沒有文件夾,所以不處理有文件夾的情況
pathDir?=?os.listdir(file_path)
獲取到了列表,那就一個(gè)一個(gè)進(jìn)行遍歷。0 是 200 的倍數(shù),所以一開始 k 的值會(huì) +1 。
allDir 是文件的名字+后綴名。from_path 就是當(dāng)前這個(gè)被遍歷出來的文件的完整路徑,to_path是這個(gè)文件要復(fù)制到的路徑。
接著 copy(from_path, to_path) 完成復(fù)制黏貼,最后 i 自增1.
for?allDir?in?pathDir:
????if(?(i%200)?==?0):
????????print("200?的倍數(shù),新建一個(gè)文件夾")
????????k?+=?1
????print(allDir)
????from_path?=?os.path.join(file_path,?allDir)
????to_path?=?save_dir?+?"\\"?+?dir_name?+?str(k)
????#??如果?to_path?目錄不存在,則創(chuàng)建
????if?not?os.path.isdir(to_path):
????????os.makedirs(to_path)
????copy(from_path,?to_path)
????i?+=?1
3 相關(guān)說明
shutil 的 copy() 是復(fù)制到一個(gè)新的地方,創(chuàng)建時(shí)間、修改時(shí)間、訪問時(shí)間都是新的,copy2() 則是會(huì)創(chuàng)建時(shí)間、修改時(shí)間、訪問時(shí)間這些也復(fù)制過去。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
