深圳品牌醫(yī)療網(wǎng)站建設(shè)百度趨勢(shì)搜索
背景
之前不是自己手動(dòng)搞了一個(gè)COS嘛,直接復(fù)制粘貼圖片,上傳到后端的服務(wù)器,返回一個(gè)可訪(fǎng)問(wèn)的地址。我在嗶哩嗶哩上也分享過(guò)這樣的一期視頻。
今天偶爾上服務(wù)器一看,我靠,我的文件真的亂!
這還得了了,我要是長(zhǎng)年累月的去上傳文件,這不得堆積成山了,到時(shí)候我想去維護(hù)都很難了。我是shigen
, 作為強(qiáng)迫癥患者,我哪能忍,必須整治,必須整治!
整改
我要采取新的命名方式了,年月/文件名
,意思是按照年月對(duì)文件進(jìn)行分組,廢話(huà)不多說(shuō),上代碼。這次我選取的是shell腳本,當(dāng)然,shigen有寫(xiě)代碼的神器在手。
#!/bin/bash
# 匹配的文件名模式
file_pattern="2023*.png"# 遍歷所有匹配的文件
for file_name in $file_pattern; do# 提取年份和月份year_month="${file_name:0:6}"# 創(chuàng)建目標(biāo)文件夾路徑target_dir="./$year_month"# 如果目標(biāo)文件夾不存在,則創(chuàng)建它mkdir -p "$target_dir"# 移動(dòng)文件mv "$file_name" "$target_dir"echo "文件已移動(dòng)到目標(biāo)文件夾:$target_dir/$file_name"
done
其實(shí)也挺簡(jiǎn)單,根據(jù)文件名模式找到符合條件的文件,再去截取文件名獲得文件的年月,之后就是創(chuàng)建文件夾移動(dòng)了。最終的效果如下:
可以看到文件是按照年月來(lái)分級(jí)的,目前的話(huà)我的文件主要分布在兩個(gè)文件夾里,正好原來(lái)保存的也是保存的兩個(gè)月的文件。但是治標(biāo)不治本,根治它還得在代碼里。
file_save_path = os.path.join(base_path, datetime.now().strftime('%Y%m%d%H%M%S') +'.png')
明顯看到,這個(gè)是直接放在base_path
下邊了。和我預(yù)想的結(jié)果差了很多了。這里就是根本,必須得去修改一下:
now = datetime.now()
cur_base_path = os.path.join(base_path, now.strftime("%Y%m%d"))
if not os.path.exists(cur_base_path):os.makedirs(cur_base_path)file_save_path = os.path.join(cur_base_path, now.strftime('%Y%m%d%H%M%S') +'.png')
本地調(diào)試好了,部署了后端的服務(wù),一切正常,可以看到我的預(yù)覽地址的路徑已經(jīng)改過(guò)來(lái)了!我的強(qiáng)迫癥得到了很好的治愈了。
后記
其實(shí)這個(gè)案例分享出來(lái),不為炫技或者啥的,關(guān)鍵是為了展示一種思想:約定>規(guī)范>配置>編碼
。在做任何的設(shè)計(jì)的時(shí)候,其實(shí)前邊的步驟缺一不可,否則后邊都會(huì)帶來(lái)很大的麻煩,造成一定的維護(hù)成本。
當(dāng)然,這樣的案例大家也可以試試其它的方式實(shí)現(xiàn):
python
os.move()
shutil.move(source, destination)
java
Files.move()
用到的nio下邊的包node.js
fs.rename(source, destination, (err) =>{}
golang
err:= os.Rename(source, destination)
我是shigen
,感謝大家的閱讀。