我正在开发一个python命令行工具,它应该删除整个项目树中的__init__.*
个文件。我试过这个:
subprocess.call(['find', './<directory>', -name, '"__init__.*"', '-delete'])
实际上有路径......
有什么想法吗?
注意:这可以使用终端。但是,当它在python中执行时;它不会删除任何内容(脚本会继续,但不会引发任何错误)。
答案 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', '{}', ';'])