天天看点

python文件处理之批量删除文件夹内特定文件

这篇是个人生活上遇到的小问题,就是为了之前那篇html和css入门,在网盘找到了udacity的前端课程,大家都知道这是国外的在线授课视频,结果我兴冲冲的打开网盘下载,解压到同一个文件夹完就傻眼了。

python文件处理之批量删除文件夹内特定文件

就是解压的字幕压缩包里居然有四个字幕,四个字幕!然后打开我的视频播放软件居然每次都自动载入第一个,阿拉伯文,一脸懵逼!我不懂播放软件也不想懂他选取字幕的原理,手动拿第二个视频试了下,貌似删除其他三个字幕后,就自动播放中文字幕了。所以要是我每个视频都删除前三个,留下中文字幕貌似就解决这问题了,可是有九十多个视频呢,手动删怕是要崩溃。他们不是说只要是重复的操作,python都能替代,那我就网上开始找资料了呗,这次要处理的文件名也不复杂,都有规律。由于在网上找了个删除文件的源码,先试下各个函数的意思。

import os   #python操作目录的库
path = '/Users/herenyi/Downloads/HTML 和 CSS 入门 Videos/4 - 页面结构 - lang_ar_vs1.srt'
#我的文件位置
os.path.splitext(path) #看下splitext函数什么功能
os.path.split(path) #看下split函数什么功能
           
python文件处理之批量删除文件夹内特定文件

split分隔出路径和文件名,solit分隔出后缀和后缀之前的两模块。

os.path.basename(path)  #看下basename函数什么功能
os.remove(path) #这是删除文件函数
           
python文件处理之批量删除文件夹内特定文件

basename是取回文件名的操作,remove是传入文件名删除的操作,由于我没在文件目录下运行,都在anaconda上运行,所以需要在文件名之前加上传入路径,本来传入文件名就行。接下来就开始实战了。

import os

#获取目录下的要删除文件
def get_file(file_dir):
    lists=[]
    for root, dirs, files in os.walk(file_dir):
        for file in files:
            if (os.path.splitext(file)[1] == '.srt' and
                os.path.split(file)[1].find('zh-cn') == -1): 
                 #再那位仁兄的基础上加入这一句逻辑判断,首先筛选出srt后缀
                 再选出不包含中文字幕的文件,也就是剩下所有字幕。
                lists.append(os.path.basename(file))
    print ('文件名获取成功')
    return lists

#批量删除文件
def removeFile():
    lists = get_file(path)
    for index in range(len(lists)):
        os.remove('/Users/herenyi/Downloads/HTML 和 CSS 入门 Videos/'+ lists[index])
    print ('文件删除成功')
    
path = '/Users/herenyi/Downloads/HTML 和 CSS 入门 Videos'
removeFile()
           
python文件处理之批量删除文件夹内特定文件

大功告成,是不是很清爽,虽然是个小尝试,可能在大牛面前见笑了,可是之前一直都是撸网上项目,这次终于解决了自己实际的问题,还是很有成就感的,哈哈。

继续阅读