起因:大三做日本交换生期间在修一门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实现文件批量编码转换及注意事项相关推荐

  1. 【Python文本处理】基于GPX文件的心率、速度、时间等参数更改

    [Python文本处理]基于GPX文件的心率.速度.时间等参数更改 GPX文件本身其实就是坐标.海拔.时间.心率等综合性的xml文件 如图: 海拔:ele 时间:time 心率:heartrate 在 ...

  2. python连接数据库设置编码格式_Python连接mssql数据库编码问题解决方法

    python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就 ...

  3. html文件批量快速转换成JSP文件

    html文件批量快速转换成JSP文件 一.新建一个Web项目,把准备好的xxx.html(1个或多个)粘贴到项目的WebRoot文件夹或WebContent\WEB-INF\jsps文件夹(jsps这 ...

  4. obj文件批量格式转换(glb/gltf)与压缩

    obj文件批量格式转换(glb/gltf)与压缩 1. 使用npm安装obj2gltf.js插件 npm install --save obj2gltf 2.安装成功后,执行下列语句即可成功转换,-i ...

  5. python json格式转换_Python实现把json格式转换成文本或sql文件

    python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...

  6. python所有文件都能用文本方式打开_python 打开文件方式讲解、常用读写操作指令(全)以及读写常见问题...

    python读写方式 python的读写,在实际应用中还是很广泛的,有必要系统性的学习一下,以便于处理问题时的抉择和对现象的合理解释.例如,python用logging写入日志文件默认的读写方式是&q ...

  7. python读取中文txt文本-Python3 解决读取中文文件txt编码的问题

    问题描述 尝试用Python写一个Wordcloud的时候,出现了编码问题. 照着网上某些博客的说法添添改改后,结果是变成了"UnicodeDecodeError: "utf-8' ...

  8. 推荐一款 批量文本编码转换的软件 —— 超级批量编码转换

    http://www.pc0359.cn/downinfo/82276.html 超级批量编码转换

  9. Python学习-03(集合,文件,编码)

    上周复习: 列表增删改查  元祖是可读列表 字符串操作 字典是无序的,通过key来找值.字典可以嵌套列表和字典 本周内容:集合--文件---字符编码 集合引入: #随机生成20个小于20的数,输出所有 ...

最新文章

  1. 创建Cocos2d-x 3.x项目以及项目结构简要说明
  2. 用JDK自带的监控工具jconsole来监控程序运行
  3. python中matplotlib条形图-python matplotlib库绘制条形图练习题
  4. 关于微信授权与登录的相关操作(纯手敲)
  5. Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件
  6. 跨站请求伪造(CSRF/XSRF)
  7. 2017.9.21 所驼门王的宝藏 思考记录
  8. Socket即时通讯
  9. cxf与struts2拦截器冲突的解决方案
  10. tensorflow学习笔记(3):使用tf.data API导入数据
  11. 帆软日期格式转换_日期和时间函数- FineReport帮助文档 - 全面的报表使用教程和学习资料...
  12. Linux搭建KMS激活服务器
  13. 小型网络综合设计 (利用交换机实现不同VLAN之间相互通信)
  14. 混合动力汽车用导热电池粘合剂市场现状及未来发展趋势
  15. MSP430单片机 MTH01-SPI 温湿度传感器 程序
  16. Kafka+Scram认证+eagle管理
  17. python输入年月日输出年月日_【手把手教你】Python金融数据处理
  18. 哪些是BSCI规定的零容忍问题点
  19. 我看好的人都变世界首富了
  20. 使用计算机网络可以提高计算机运行速度,如何提高计算机运行速度

热门文章

  1. MFC开发IM--MFC非模态对话框的创建及显示
  2. 苹果计划2025年推出全自动驾驶电动汽车:没有方向盘和踏板
  3. 特斯拉部分车型将逐渐搭载磷酸铁锂电池,比亚迪有望成为其电池供应商
  4. 滴!你的“十三香”已发货,iPhone 13系列今日正式发售
  5. 开工第一天,老板补发年终奖,一箱18元的冰棍
  6. 工信部:要实现并完善针对老年人增设的“一键进入”人工客服功能
  7. 富士康将把部分iPad和MacBook生产线从中国转移到越南
  8. 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
  9. 腾讯之后,网易跟上了:未成年人每日限玩1.5小时游戏
  10. 别再把比特币和区块链划等号了,求求你们了!