使用Python遍历文件
下载了很多歌曲,有些是.mp3
格式的,有些是.flac
格式,还有的是.wav
、.ape
各种各样。我们知道,.flac
和.ape
是无损格式,所以我想保留这两种格式的文件,删掉.wav
、.mp3
格式的音乐。
可以用 Python 自动化处理。
代码
首先我的歌曲全都是放在D:\CloudMusic
这个目录下,而这个目录下还有很多子目录,现在要做的就是把D:\CloudMusic
和它的子目录下所有.wav
、.mp3
格式的音乐找出来。
1 | import os |
先看os.walk()
的用法:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
top
参数让 os.walk()
根目录下每一个文件夹(包括根目录)产生一个3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】
因此,for root, dirs, files in os.walk(music_dir):
中的root
、dirs
、files
分别表示文件夹路径, 文件夹名字, 文件名。
1 | >>>for root, dirs, files in os.walk(music_dir): |
输出的是CloudMusic
目录下的所有子文件夹路径:
1 | D:\CloudMusic |
1 | >>>for root, dirs, files in os.walk(music_dir): |
输出的是CloudMusic
目录下的所有子文件夹名字(放在一个list里):
1 | ['Cache', 'IU', 'MV'] |
第一个空list表示 Cache 里没有子文件夹了, 第二个空list表示 IU - Last.Fantasy 里没有子文件夹了,以此类推。
1 | >>>for root, dirs, files in os.walk(music_dir): |
输出的是CloudMusic
目录下(包括子文件夹)的所有文件名字(放在一个list里):
1 | ['01 Welcome To New York.flac', '02 Blank Space.flac', '03 Style.flac', '04 - Mean.flac', '05 All You Had To Do Was Stay.flac', '06 Shake It Off.flac', '07 I Wish You Would.flac', '08 Bad Blood.flac', '09 Wildest Dreams.flac', '10 How You Get The Girl.flac', '11 This Love.flac', '12 I Know Places.flac', '13 Clean.flac', '14 Wonderland.flac', '15 You Are In Love.flac', '16 New Romantics.flac', '17 I Know Places - Voice Memos.flac', '18 I Wish You Would - Voice Memos.flac', '19 Blank Space - Voice Memos.flac', 'AlbumArtSmall.jpg', 'C Allstar - 天梯.flac', 'Chen、Punch - Everytime.ape', 'Davichi - 这份爱.ape', 'desktop.ini', 'Folder.jpg', 'G.E.M.邓紫棋 - 喜欢你.flac', 'Gummy - You Are My Everything(English Ver.).flac', 'Gummy - You Are My Everything.flac', 'K.Will - 说干什么呢.flac', 'LYn - With You.flac', 'M.C. The Max - 为你化成风.flac', 'Mad Clown、金娜英 - 再次见到你.flac', 'SG WANNABE - 让我们相爱.flac', '____.flac', '光良 - 第一次.flac', '其实我介意.flac', '孙燕姿 - 雨天.flac', '小幸运.flac', '曲婉婷 - Drenched.flac', '李克勤 - 友情岁月.flac', '林宥嘉-想自由.flac', '林宥嘉-浪费.flac', '林宥嘉-说谎.APE', '梁静茹 - 爱久见人心.flac', '荒木毬菜 - 小雨と君.wav', '许美静 - 倾城.wav', '许美静-遗憾.WAV', '逃跑计划 - 夜空中最亮的星.flac', '金俊秀 - How Can I Love You.flac', '陈奕迅 - 富士山下.flac', '陈奕迅 - 最佳损友.flac', '陈奕迅 - 陪你度过漫长岁月.flac']['IU - 至少有那天 【视频from:微博@德米安】.mp3', 'IU - 너의 의미(你的意义).mp4', '[onlyU字幕组][MV] IU아이유–Through the Night 夜信[1080P精效中字].mp4', '(中字720P)《至少有那天》饭拍:wj_淮.mp4'] |
用os.remove()
删除
1 | import os |
target
这个变量主要是把文件夹路径和文件名拼接起来,构成一个完整的文件路径,比如:
1 | D:\CloudMusic\IU\IU-Can You Hear Me\06 The Age Of The Cathedrals.wav |
后面的就是判断后缀名是否为 .mp3
和 .wav
, 是的话就删除之。
知识点
写这篇记录的目录主要还是学习一个知识点:
输入:
1 | L = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]] |
输出:
1 | [1, 2, 3] |
输入:
1 | L = [[[1,11,111],2,3],[[4,44,444],5,6],[[7,77,777],8,9]] |
输出:
1 | [1, 11, 111] |
输入:
1 | L = [[[1,11,111],2,3],[[4,44,444],5,6],[[7,77,777],8,9]] |
输出:
1 | 1 |