python实现文件批量编码转换及注意事项


Posted in Python onOctober 14, 2019

起因:大三做日本交换生期间在修一门C语言图像处理的编程课,在配套书籍的网站上下载了sample,但是由于我用的ubuntu18.04系统默认用utf-8编码,而文件源码是Shift_JIS编码,因而文档注释是乱码。在不改变系统默认编码的前提下,用python将'.c'和'.h'文件的编码转换保存新的文件夹,其余文件原封不动复制。

import os
abspath = "/home/fanghaoyu/桌面/libraries/" # 新文件夹的路径
try:
  os.makedirs(abspath) # 创建新文件夹
except FileExistsError:
  pass
a = [] # 定义列表a,用来存放原文件的路径
b = [] # 定义列表b,用来存放新文件的路径
# 函数用来递归获取文件,更改编码写入到新文件夹中,如果不是.c和.h文件则复制
def get_file_name(path1, path2):
  for i in os.listdir(path1):
    if os.path.isdir(os.path.join(path1, i)):
      try:
        os.makedirs(os.path.join(path2, i))
      except FileExistsError:
        pass
      get_file_name(os.path.join(path1, i), os.path.join(path2, i))
    else:
      a.append(os.path.join(path1, i))
      b.append(os.path.join(path2, i))
      if a[-1].endswith('.c') or a[-1].endswith('.h'):
        with open(a[-1], 'r', encoding='Shift_JIS') as fp:
          s = fp.read()
          with open(b[-1], 'w') as fp2:
            fp2.write(s)
            fp2.close()
      else:
        a[-1] = a[-1].replace(' ', '\ ').replace('(', '\(').replace(')', '\)')
        b[-1] = b[-1].replace(' ', '\ ').replace('(', '\(').replace(')', '\)')
        os.system('cp {} {}'.format(a[-1].strip('\''), b[-1].strip('\'')))
  return 0
get_file_name("/home/fanghaoyu/桌面/prog978-4-7856-3179-6/", abspath)
print(a)
print(len(a))
print(b)
print(len(b))

运行结果如下:

/usr/bin/python3.6 /home/fanghaoyu/桌面/python/coding_change.py
['/home/fanghaoyu/桌面/prog978-4-7856-3179-6/chap06/vq.c', '/home/fanghaoyu/桌面/prog978-4-7856-3179-6/chap06/vqcode.c',...]
1970
['/home/fanghaoyu/桌面/libraries/chap06/vq.c', '/home/fanghaoyu/桌面/libraries/chap06/vqcode.c', ...]
1970
Process finished with exit code 0

需要注意的几点:

open打开原文件,打开方式用'r',则需要设置编码方式encoding='Shift_JIS'

python的os.system()命令中调用ubuntu的shell命令,当cp的文件名中含有' ',  '(',  ')'这三个时,需要在前面加上反斜杠'\',否则会报错

总结

以上所述是小编给大家介绍的python实现文件批量编码转换及注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python调用cmd复制文件代码分享
Dec 27 Python
详解python的几种标准输出重定向方式
Aug 15 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
python操作oracle的完整教程分享
Jan 30 Python
Python读取properties配置文件操作示例
Mar 29 Python
Python异常处理操作实例详解
May 10 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
python通过移动端访问查看电脑界面
Jan 06 Python
Django后端按照日期查询的方法教程
Feb 28 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 Python
python 正则表达式贪婪模式与非贪婪模式原理、用法实例分析
Oct 14 #Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
Oct 14 #Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 #Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
Oct 14 #Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
Oct 14 #Python
执行Django数据迁移时报 1091错误及解决方法
Oct 14 #Python
解析Python3中的Import
Oct 13 #Python
You might like
在Ubuntu 14.04上部署 PHP 环境及 WordPress
2014/09/02 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
PHP折半(二分)查找算法实例分析
2018/05/12 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
2019/03/18 PHP
用js做一个小游戏平台 (一)
2009/12/29 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
浅析JavaScript中两种类型的全局对象/函数
2013/12/05 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
JS关闭窗口时产生的事件及用法示例
2016/08/20 Javascript
JavaScript实现简单评论功能
2017/08/17 Javascript
对Angular中单向数据流的深入理解
2018/03/31 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
vue 左滑删除功能的示例代码
2019/01/28 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
2019/06/06 jQuery
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
Python标准库内置函数complex介绍
2014/11/25 Python
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
pytorch实现MNIST手写体识别
2020/02/14 Python
Python tcp传输代码实例解析
2020/03/18 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
python3中布局背景颜色代码分析
2020/12/01 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
专升本个人自我评价
2013/12/22 职场文书
踏青活动策划方案
2014/08/19 职场文书
单方投资意向书
2015/05/11 职场文书
公司食堂管理制度
2015/08/05 职场文书
小学教师教学反思
2016/02/24 职场文书
一起来学习Python的元组和列表
2022/03/13 Python
MySQL提升大量数据查询效率的优化神器
2022/07/07 MySQL