python脚本:将一个文件夹(包括子文件夹)里面的非Utf-8的文件转为utf-8

安装

chardet 用于检测文件编码

pip install chardet 

库文件的作用

  • os:用于遍历目录和处理文件路径。
  • chardet:用于检测文件编码。
  • pathlib:一个处理文件路径的库,可以使代码更简洁、易读。

用法

1、start_directory设置要转的文件夹
2、ignore_directories 设置忽略要转的文件夹
3、ignore_extensions 设置忽略要文转的后缀

代码

import os
import chardet
from pathlib import Path
def detect_encoding(file_path):
    with open(file_path, 'rb') as f:
        data = f.read()
        result = chardet.detect(data)
        return result['encoding']
def convert_to_utf8(file_path, original_encoding):
    with open(file_path, 'r', encoding=original_encoding) as f:
        content = f.read()
    with open(file_path, 'w', encoding='utf-8') as f:
        f.write(content)
def process_directory(start_directory):
    ignore_directories = {".git"}
    ignore_extensions = {".png"}
    for root, dirs, files in os.walk(start_directory):
        # 忽略指定的文件夹
      
        for file in files:
            file_path = Path(root) / file
            
            # 忽略指定的文件类型
            if file_path.suffix in ignore_extensions:
                continue
            original_encoding = detect_encoding(file_path)
            if original_encoding != 'utf-8':
                print(f"Converting {file_path} from {original_encoding} to utf-8")
                convert_to_utf8(file_path, original_encoding)
            else:
                print(f"{file_path} is already in utf-8 format")
if __name__ == '__main__':
    start_directory = 'D:\PersonGit\PersonalLearningSpace'
    process_directory(start_directory)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值