读书人

python一个目录下以及子目录下所有文件

发布时间: 2013-03-26 09:54:34 作者: rapoo

python一个目录下以及子目录下所有文件里,内容每一行如果是空格若干+字符串开始"printf"+其他字符,这一行删除.用python如何写
一个目录下以及子目录下所有文件里,内容每一行如果是空格若干&&字符串开始"printf"&&其他字符,这一行删除.用python如何写
目的就是删除项目代码里的所有调试代码,清理干净.
例如


int a = 5;
printf("%d",a); //打印a的值


上面就要把第二行代码全部删除
[解决办法]
意思就是删除带有 printf 的行?
#========================================================
# author:ago
# 2012/09/20 10:08:42
#========================================================
import os

DIR = 'dir_name'

for root,dirs,files in os.walk(DIR):
for file in files:
print file
f = open(DIR+'/'+file)
data = f.read()
f.close()
alist = data.split('\n')
string = ''
for i in alist:
print i
if 'printf' not in i:
string += i + '\r\n'

#print string
f = open(DIR+'/'+file , 'w')
f.write(string)
f.close()

[解决办法]
引用:
意思就是删除带有 printf 的行?
Python code
#========================================================
# author:ago
# 2012/09/20 10:08:42 ……


你这个代码不仅有错误, 而且糟烂, 不敢恭维啊.
#python 3.2
#coding=gb2312

import os
import re

#define your own rule whether to remove the file
def should_remove_file(file_path):
with open(file_path, 'r') as stream:
for line in stream:
if re.search(r'^\s*printf.*$', line, re.I):
return True
return False

def list_files_in_dir(dir, callback):
for dirpath, dirnames, filenames in os.walk(dir):
for file in filenames:
file_path = os.path.join(dirpath, file)
print(file_path)
if callback(file_path):
os.unlink(file_path)


print("remove %s ...".format(file_path))

list_files_in_dir('d:/test_dir', should_remove_file)

读书人网 >perl python

热点推荐