读写不同编码的文件,并加log

import os
import chardet
import codecs

log = r’ALOGD(“from zpy:\nfilepath: %s; filename: %s; linenumber: %s\n”);’

def add_log(path, filename):
if os.path.splitext(filename)[-1][1:] != ‘cpp’:
return
try:
enc = chardet.detect(codecs.open(os.path.join(path, filename), ‘rb’).read())[‘encoding’]
f = open(os.path.join(path, filename), ‘r+’, encoding=enc)

with open(os.path.join(path, filename), ‘r+’, encoding=’utf-8’) as f:

    lines = f.readlines()
    count = 0
    f.seek(0, 0)
    for line in lines:

f.write(line)

        count += 1
        if '{' in line:
            spacenum = max([i for i in range(len(line)) if line[: i] == ' ' * i])

f.write(’ ’ * (spacenum + 4) + log % (path, filename, count) + ‘\n’)

            count += 1
except UnicodeDecodeError:
    print(path,filename)
finally:
    f.close()

def find_file(path):
files = os.listdir(path)
for file in files:
if os.path.isdir(os.path.join(path, file)):
find_file(os.path.join(path, file))
else:
add_log(path, file)

if name == ‘main‘:
path = ”
find_file(path)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值