Python 2.7 - 递归删除所有__init__.py和__init __。pyc文件

时间:2014-02-04 00:00:21

标签: python file python-2.7 recursion removeall

我正在开发一个python命令行工具,它应该删除整个项目树中的__init__.*个文件。我试过这个:

subprocess.call(['find', './<directory>', -name, '"__init__.*"', '-delete'])

实际上有路径......

有什么想法吗?

注意:这可以使用终端。但是,当它在python中执行时;它不会删除任何内容(脚本会继续,但不会引发任何错误)。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用glob模块删除给定子目录下的文件:

import glob, os
init_files = glob.glob('./directory/__init__.*')
for f in init_files: os.remove(f)

要递归遍历子目录,可以使用os.walk函数:

import os, fnmatch
for root, dirs, files in os.walk('./directory'):
    for f in fnmatch.filter(files, '__init__.*'):
        os.remove(f)

答案 1 :(得分:0)

您要执行的bash命令是:

find ./<directory> -name "__init__.py*" -exec  rm -rf {} \;

在跳转之前,请运行以下命令以打印实际将删除的文件:

subprocess.check_output(['find', './<directory>','-name', '__init__.py*', '-exec', 'echo', '{}', ';']).split('\n')

然后,如果看起来不错,请运行:

subprocess.check_output(['find', './<directory>','-name', '__init__.py*', '-exec', 'rm', '{}', ';'])