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中针对函数处理的特殊方法
Mar 06 Python
python使用multiprocessing模块实现带回调函数的异步调用方法
Apr 18 Python
Python中的filter()函数的用法
Apr 27 Python
Python中使用支持向量机(SVM)算法
Dec 26 Python
python中partial()基础用法说明
Dec 30 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
树莓派极简安装OpenCv的方法步骤
Oct 10 Python
解决django model修改添加字段报错的问题
Nov 18 Python
Python彻底删除文件夹及其子文件方式
Dec 23 Python
Win10里python3创建虚拟环境的步骤
Jan 31 Python
基于python连接oracle导并出数据文件
Apr 28 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
php 使用GD库为页面增加水印示例代码
2014/03/24 PHP
PHP中使用gettext解决国际化问题的例子(i18n)
2014/06/13 PHP
PHP生成随机数的方法实例分析
2015/01/22 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
php实现图片以base64显示的方法
2016/10/13 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
JS的IE和Firefox兼容性集锦
2006/12/11 Javascript
javascript 有趣而诡异的数组
2009/04/06 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
将form表单中的元素转换成对象的方法适用表单提交
2014/05/02 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
javascript给span标签赋值的方法
2015/11/26 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
Javascript之图片的延迟加载的实例详解
2017/07/24 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
微信小程序中的列表切换功能实例代码详解
2020/06/09 Javascript
微信小程序实现多图上传
2020/06/19 Javascript
python批量下载图片的三种方法
2013/04/22 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python连接mysql数据库的正确姿势
2016/02/03 Python
python实现比较文件内容异同
2018/06/22 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
python多线程并发及测试框架案例
2019/10/15 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
用python写一个带有gui界面的密码生成器
2020/11/06 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
2020/11/17 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
Fnac西班牙官网:法国文化和电子产品零售商
2021/03/14 全球购物
双方协议书
2014/04/22 职场文书
2015年结对帮扶工作总结
2015/05/04 职场文书
小学教师读书笔记
2015/07/01 职场文书
python利用while求100内的整数和方式
2021/11/07 Python