这篇文章主要介绍了利用python怎么实现一个文件批量编码转换功能,此处通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:
Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。
import os abspath = "/home/fanghaoyu/桌面/libraries/" # 新文件夹的路径 try: os.makedirs(abspath) # 创建新文件夹 except FileExistsError: pass a = [] # 定义列表a,用来存放原文件的路径 b = [] # 定义列表b,用来存放新文件的路径 # 函数用来递归获取文件,更改编码写入到新文件夹中,如果不是.c和.h文件则复制 def get_file_name(path2, path3): for i in os.listdir(path2): if os.path.isdir(os.path.join(path2, i)): try: os.makedirs(os.path.join(path3, i)) except FileExistsError: pass get_file_name(os.path.join(path2, i), os.path.join(path3, i)) else: a.append(os.path.join(path2, i)) b.append(os.path.join(path3, 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怎么实现一个文件批量编码转换功能的内容请搜索亿速云以前的文章或继续浏览下面的相关文章希望大家以后多多支持亿速云!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。