最近,下了載了一部動畫 Psycho-Pass 。每集視頻的命名是這樣的:
.
├── 【AGE动漫】[Kamigami][01][1280x720 x264 AAC Sub(CH,JP)].mp4
├── 【AGE动漫】[Kamigami][02][1280x720 x264 AAC Sub(CH,JP)].mp4
├── ...
└── 【AGE动漫】[Kamigami][22][1280x720 x264 AAC Sub(CH,JP)].mp4
看著命名格式很不舒服,加上每集都沒有對應的標題,不能忍。於是,打算將它們重新命名。如果手動逐一修改,那將會是極其枯燥無聊的重複性的工作,重複性的工作當然將它們步驟代碼化,然後交給電腦完成剩下重複性操作。
寫代碼之間,首先想清楚最後想要實現的結果。
我預期是每集視頻都以序號+名稱.擴展名
來呈現。分析現在的命名格式,我能拿到的是每集序號,如
01
,還有擴展名
.mp4
。那麼與預期效果只剩下每集的名稱了。我在維基百科上找到了
Psycho-Pass
的條目,並且裡頭有以表格列出的每集信息。我將表格內容拷貝到 Google
sheet。因為我只需要每集的名稱,保留每集名稱列,其餘都刪除,以
csv
格式保存,因為動畫有兩季,所以我將其分別保存為
season1.csv
和
season2.csv
。其中第二季中第一集《正義的天秤〈299/300〉>》和第八集《巫女的懷孕》以及第十一集《什麼顏色?》,即使我是使用
Linux 系統,但是反斜杠 /
命名依然不合法的,另外,還考慮到未來可能會上傳到網盤,那麼統一將
<>
和 ?
都去掉。現在我的工作區的文件結構如下:
├── season1
│ ├── 【AGE动漫】[Kamigami][01][1280x720 x264 AAC Sub(CH,JP)].mp4
│ ├── 【AGE动漫】[Kamigami][02][1280x720 x264 AAC Sub(CH,JP)].mp4
│ ├── 【AGE动漫】[Kamigami][03][1280x720 x264 AAC Sub(CH,JP)].mp4
│ ├── 【AGE动漫】[Kamigami][04][1280x720 x264 AAC Sub(CH,JP)].mp4
│ ├── 【AGE动漫】[Kamigami][05][1280x720 x264 AAC Sub(CH,JP)].mp4
│ ├── 【AGE动漫】[Kamigami][06][1280x720 x264 AAC Sub(CH,JP)].mp4
│ ├── ...
│ └── 【AGE动漫】[Kamigami][22][1280x720 x264 AAC Sub(CH,JP)].mp4
├── season2
│ ├── 【AGE动漫】[Kamigami][01][BD 720p x264 AAC Sub(Chs,Jap)].mp4
│ ├── 【AGE动漫】[Kamigami][02][BD 720p x264 AAC Sub(Chs,Jap)].mp4
│ ├── ...
│ └── 【AGE动漫】[Kamigami][11][BD 720p x264 AAC Sub(Chs,Jap)].mp4
├── rename.py
├── season1.csv
└── season2.csv
剛才保存的 season2.csv
和 season1.csv
裡面的結構是一致的,season2.csv
展示如下:
正义的天秤
悄悄逼近的虚实
恶魔的证明
约伯的救济
不被禁止的游戏
丢石头的人们
找不到的孩子们
巫女的怀孕
全能者的悖论
灵魂的基准
什么颜色
運行代碼:
import os
def season1():
'../smb/season1')
os.chdir(= []
number
with open('../season1.csv', 'r') as f:
= f.read().splitlines()
episode
for n in range(1, len(episode)+1):
= str(n).zfill(2)
n
number.append(n)
= dict(zip(number, episode))
episode
for file in os.listdir():
= os.path.splitext(file)
file_name, file_ext = file_name[18:20]
file_order = '{} {}{}'.format(file_order, episode.get(file_order), file_ext)
new_name_season1
file, new_name_season1)
os.rename(
def season2():
'../season2')
os.chdir(= []
number
with open('../season2.csv', 'r') as f:
= f.read().splitlines()
episode
for n in range(1, len(episode)+1):
= str(n).zfill(2)
n
number.append(n)
= dict(zip(number, episode))
episode
for file in os.listdir():
= os.path.splitext(file)
file_name, file_ext = file_name[18:20]
file_order
= '{} {}{}'.format(file_order, episode.get(file_order), file_ext)
new_name_season2
file, new_name_season2)
os.rename(
def run():
season1()
season2()
if __name__ == '__main__':
run()
重命名後結果:
.
├── rename.py
├── season1
│ ├── 01 犯罪系数.mp4
│ ├── 02 人尽其才.mp4
│ ├── 03 饲育的规则.mp4
│ ├── 04 你无人知晓的面具.mp4
│ ├── 05 你无人知晓的面孔.mp4
│ ├── 06 狂王子的归来.mp4
│ ├── 07 紫兰的花语.mp4
│ ├── 08 剩下的、只有沉默.mp4
│ ├── 09 乐园的果实.mp4
│ ├── 10 玛土撒拉的游戏.mp4
│ ├── 11 圣人的晚餐.mp4
│ ├── 12 魔鬼的十字路口.mp4
│ ├── 13 来自深渊的邀请.mp4
│ ├── 14 甜美的毒药.mp4
│ ├── 15 硫磺飘落的街道.mp4
│ ├── 16 审判之门.mp4
│ ├── 17 铁石心肠.mp4
│ ├── 18 写在水上的约定.mp4
│ ├── 19 透明的影子.mp4
│ ├── 20 正义的所在.mp4
│ ├── 21 血的奖赏.mp4
│ └── 22 完美的世界.mp4
├── season1.csv
├── season2
│ ├── 01 正义的天秤.mp4
│ ├── 02 悄悄逼近的虚实.mp4
│ ├── 03 恶魔的证明.mp4
│ ├── 04 约伯的救济.mp4
│ ├── 05 不被禁止的游戏.mp4
│ ├── 06 丢石头的人们.mp4
│ ├── 07 找不到的孩子们.mp4
│ ├── 08 巫女的怀孕.mp4
│ ├── 09 全能者的悖论.mp4
│ ├── 10 灵魂的基准.mp4
│ └── 11 什么颜色.mp4
└── season2.csv