python遍历路径下所有文件_python遍历和删除指定目录下所有的pyc文件

@(cookbook)[python, dir]

问题

python遍历和删除指定目录下所有的pyc文件。但是在指定目录中有node_modules子目录,改目录文件巨多,层级巨深。因此还要排除此子目录。

解决方案

#!/usr/bin/env python

# -*- coding: utf-8 -*-

"""

__title__ = 'delete *.pyc file'

__author__ = 'gasxia'

__mtime__ = '9/21/2016'

"""

import fnmatch

from os import walk, path, remove, listdir

import sys

if len(sys.argv) >= 3:

EXT = sys.argv[2]

DEL_DIR = sys.argv[1]

elif len(sys.argv) >= 2:

EXT = 'pyc'

DEL_DIR = sys.argv[1]

else:

EXT = 'pyc'

DEL_DIR = r'F:\jinrunsen\Projects\notus'

if not path.exists(DEL_DIR):

print('error: DEL_DIR not found!!!')

exit()

print('DEL_DIR: ', DEL_DIR, '\ndelete file extension: ', EXT)

print('deleted files:\n')

def del_pyc(DEL_DIR):

# highpath: 最高级目录,排除掉'node_modules'

for highpath in listdir(DEL_DIR):

# 去除顶层目录中的pyc文件

if os.path.isfile(highpath):

if fnmatch.fnmatch(highpath, '*.' + EXT): # unix shell风格匹配方式

# if filename.endswith('.pyc'):

print(filename)

remove(path.join(filepath, filename))

print highpath

if path.basename(highpath) == 'node_modules':

continue

# lowpath: 其余的子目录

lowpath = path.join(DEL_DIR, highpath)

for filepath, _, filename_list in walk(lowpath):

for filename in filename_list:

if fnmatch.fnmatch(filename, '*.' + EXT): # unix shell风格匹配方式

# if filename.endswith('.pyc'):

print(filename)

remove(path.join(filepath, filename))

if __name__ == '__main__':

del_pyc(DEL_DIR)

讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值