工作、生活中用到的实用小脚本

本文主要包含我用于解决一些小问题的实用脚本(至少对于我来说是这样的)。我所用的系统是Windows 10,虚拟机安装了Ubuntu。主要工作环境还是在Windows下进行的(目前是这样)。其实我编写的这些小脚本的功能Windows已经能够很好解决,比如下面第一个小脚本,用于搜索出目录下的所有bak文件,然后删除,使用Windows的文件搜索功能也能很快解决。我编写这些小脚本的目的主要是为了熟悉使用python。

1. search .bak and remove them

# coding=utf-8
# Author: LooEv

import os
import glob
from fnmatch import fnmatch

"""
There are two methods to remove the back-up files.I ues the .dwg files frequently,
and it will produce many back-up files.And I wanna remove them.
"""

def rm_bak_1(path):
    for fn in glob.iglob(path + os.sep + '*'):
        if os.path.isdir(fn):
            rm_bak_1(fn)
        else:
            if fnmatch(fn, '*.bak'):
                print 'removed the file:', fn.decode('gbk')
                os.remove(fn)

            # if fn.decode('gbk').endswith('.bak'):
            #     print fn.decode('gbk')
            #     os.remove(fn)
            # if os.path.splitext(fn)[1] == '.bak':
            #     print fn.decode('gbk')
            #     os.remove(fn)


def rm_bak_2(path):
    count = 0
    all_bak = 0
    for parent, dirnames, filenames in os.walk(path):
        for fn in filenames:
            if fnmatch(fn, '*bak'):
                os.remove(parent + os.sep + fn)
                count += 1
                all_bak += 1
        if count != 0:
            print u"在 " + parent.decode('gbk') + u" 共删除%d个bak文件" % count
        count = 0
    print u"一共删除%d个bak文件" % all_bak


path = os.getcwd()

# rm_bak_1(path)

rm_bak_2(path)
raw_input('press enter to exit:')

此脚本我使用了两种方式遍历目录:

  1. 利用glob模块进行递归筛选出所有文件夹
  2. 利用os模块的walk()函数遍历出所有文件

而在判断文件是否是后缀名为.bak的文件,可以三种方式:

  1. 利用fnmatch模块的fnmatch函数判断
  2. 利用字符串string的endswith()函数
  3. 利用os.path.splitext()

保持更新

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器