Python 遍历指定文件目录的所有文件并对其进行转码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 遍历指定文件目录的所有文件并对其进行转码相关的知识,希望对你有一定的参考价值。

#!/usr/bin/python
# coding:utf8

import os
import chardet
import sys
import traceback
import logging


# 遍历文件
def get_all_file_path(path, all_file_path):
    """
    :param path: 指定的扫描路径
    :param all_file_path: 保存各个文件的路径
    :return:
    """
    if not os.path.isdir(path):
        print "%s该文件路径不存在"%(path)
        return []
    filelist = os.listdir(path)
    for filename in filelist:
        filepath = os.path.join(path, filename)
        # 递归:判断文件路径是不是文件夹,如果时继续调用该函数
        if os.path.isdir(filepath):
            get_all_file_path(filepath, all_file_path)
        else:
            all_file_path.append(filepath)
    return all_file_path


# 转码
def file_encode(file_path, final_file_name, target_code):
    """
    :param file_path: 要转化的文件名及路径
    :param final_file_name: 转化成功的文件保存到指定的文件
    :return: boolean
    :target_code: 指定的目标编码
    """
    try:
        # 读文件
        file_obj = open(file_path, r)
        # 获取文件内容
        file_content = file_obj.read()
        # 判断文件内容的编码格式
        file_code = chardet.detect(file_content)
        # 解码并转码(必须写解码,才能够转码)
        gbk_file_content = file_content.decode(file_code[encoding]).encode(target_code)
     file_obj.close() with open(final_file_name,
wb) as fp: fp.write(gbk_file_content) return True except Exception: traceback.print_exc() return False # 示例:转化为gbk if __name__ == __main__: if not os.path.isdir(gbk_file_data): try: os.mkdir(gbk_file_data) except Exception, e: print "Can not create dir:", e if len(sys.argv) == 2: all_file_path = get_all_file_path(sys.argv[1], []) else: logging.error("Please input file path!") exit(1) for file_path in all_file_path: if file_encode(file_path, gbk_file_data/+gbk_+file_path.split(/)[-1], "gbk"): print "%s--转码成功"%(file_path) else: print "%s--转码失败" % (file_path)

 


以上是关于Python 遍历指定文件目录的所有文件并对其进行转码的主要内容,如果未能解决你的问题,请参考以下文章

第二次作业

Python中如何遍历指定目录下的所有文件?

ruby sizes:计算当前文件夹的所有文件大小并对其进行排序

Find and delete duplicate files

求通过python实现,在指定目录下遍历所有文件,将以.txt为后缀的文件移动到另一指定目录中

Python os模块实例之遍历目录及子目录指定扩展名的文件