python文本编码转换_python实现文件批量编码转换及注意事项
起因:大三做日本交换生期间在修一门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实现文件批量编码转换及注意事项相关推荐
- 【Python文本处理】基于GPX文件的心率、速度、时间等参数更改
[Python文本处理]基于GPX文件的心率.速度.时间等参数更改 GPX文件本身其实就是坐标.海拔.时间.心率等综合性的xml文件 如图: 海拔:ele 时间:time 心率:heartrate 在 ...
- python连接数据库设置编码格式_Python连接mssql数据库编码问题解决方法
python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就 ...
- html文件批量快速转换成JSP文件
html文件批量快速转换成JSP文件 一.新建一个Web项目,把准备好的xxx.html(1个或多个)粘贴到项目的WebRoot文件夹或WebContent\WEB-INF\jsps文件夹(jsps这 ...
- obj文件批量格式转换(glb/gltf)与压缩
obj文件批量格式转换(glb/gltf)与压缩 1. 使用npm安装obj2gltf.js插件 npm install --save obj2gltf 2.安装成功后,执行下列语句即可成功转换,-i ...
- python json格式转换_Python实现把json格式转换成文本或sql文件
python如何将json格式的数据快速的转化成指定格式的数据呢?或者转换成sql文件? 下面的例子是将json格式的数据准换成以#_#分割的文本数据,也可用于生成sql文件. [root@bogon ...
- python所有文件都能用文本方式打开_python 打开文件方式讲解、常用读写操作指令(全)以及读写常见问题...
python读写方式 python的读写,在实际应用中还是很广泛的,有必要系统性的学习一下,以便于处理问题时的抉择和对现象的合理解释.例如,python用logging写入日志文件默认的读写方式是&q ...
- python读取中文txt文本-Python3 解决读取中文文件txt编码的问题
问题描述 尝试用Python写一个Wordcloud的时候,出现了编码问题. 照着网上某些博客的说法添添改改后,结果是变成了"UnicodeDecodeError: "utf-8' ...
- 推荐一款 批量文本编码转换的软件 —— 超级批量编码转换
http://www.pc0359.cn/downinfo/82276.html 超级批量编码转换
- Python学习-03(集合,文件,编码)
上周复习: 列表增删改查 元祖是可读列表 字符串操作 字典是无序的,通过key来找值.字典可以嵌套列表和字典 本周内容:集合--文件---字符编码 集合引入: #随机生成20个小于20的数,输出所有 ...
最新文章
- 创建Cocos2d-x 3.x项目以及项目结构简要说明
- 用JDK自带的监控工具jconsole来监控程序运行
- python中matplotlib条形图-python matplotlib库绘制条形图练习题
- 关于微信授权与登录的相关操作(纯手敲)
- Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件
- 跨站请求伪造(CSRF/XSRF)
- 2017.9.21 所驼门王的宝藏 思考记录
- Socket即时通讯
- cxf与struts2拦截器冲突的解决方案
- tensorflow学习笔记(3):使用tf.data API导入数据
- 帆软日期格式转换_日期和时间函数- FineReport帮助文档 - 全面的报表使用教程和学习资料...
- Linux搭建KMS激活服务器
- 小型网络综合设计 (利用交换机实现不同VLAN之间相互通信)
- 混合动力汽车用导热电池粘合剂市场现状及未来发展趋势
- MSP430单片机 MTH01-SPI 温湿度传感器 程序
- Kafka+Scram认证+eagle管理
- python输入年月日输出年月日_【手把手教你】Python金融数据处理
- 哪些是BSCI规定的零容忍问题点
- 我看好的人都变世界首富了
- 使用计算机网络可以提高计算机运行速度,如何提高计算机运行速度
热门文章
- MFC开发IM--MFC非模态对话框的创建及显示
- 苹果计划2025年推出全自动驾驶电动汽车:没有方向盘和踏板
- 特斯拉部分车型将逐渐搭载磷酸铁锂电池,比亚迪有望成为其电池供应商
- 滴!你的“十三香”已发货,iPhone 13系列今日正式发售
- 开工第一天,老板补发年终奖,一箱18元的冰棍
- 工信部:要实现并完善针对老年人增设的“一键进入”人工客服功能
- 富士康将把部分iPad和MacBook生产线从中国转移到越南
- 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
- 腾讯之后,网易跟上了:未成年人每日限玩1.5小时游戏
- 别再把比特币和区块链划等号了,求求你们了!