编写程序,用户在命令提示行输入文件名和该文件的编码格式,读入文件,将其转存成UTF-8格式。如果用户没有指定输入文件的编码格式,则使用chardet模块“猜”出其编码格式,用于解码。使用argparse模块解析用户命令提示行输入。
3条回答 默认 最新
- 我是全宇宙ENERGE的总量 2021-05-21 15:28关注
import chardet import argparse import os import codecs def get_encoding(file_name): f = open(file_name, 'rb') encoding = chardet.detect(f.read())['encoding'] return encoding def write(file_name, content): with codecs.open(file_name, 'w', 'utf-8') as f: f.write(content) def read(file_name, encoding): with codecs.open(file_name, 'r', encoding) as f: return f.read() def build(input_file_name): dirname = os.path.dirname(input_file_name) base = os.path.splitext(os.path.basename(input_file_name)) return os.path.join(dirname, ''.join(base[0] + r' utf-8'+base[-1])) def init_parser(): parser = argparse.ArgumentParser() parser.add_argument(r'input') parser.add_argument(r'-e', '--encoding') parser.add_argument(r'-o', '--output') return parser if __name__ == '__main__': parser = init_parser() args = parser.parse_args() input_file_name = args.input encoding_file = args.encoding or get_encoding(input_file_name) output = args.output or build(input_file_name) content = None try: content = read(input_file_name, encoding_file) except OSError: print("something wrong") finally: write(output, content) print("Done")
时隔多年,我答我自己
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 11无用 1
悬赏问题
- ¥15 根据以下文字信息,做EA模型图
- ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
- ¥15 vscode程序一直报同样的错,如何解决?
- ¥15 关于使用unity中遇到的问题
- ¥15 开放世界如何写线性关卡的用例(类似原神)
- ¥15 关于并联谐振电磁感应加热
- ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
- ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
- ¥60 关机时蓝屏并显示KMODE_EXCEPTION_NOT_HANDLED,怎么修?
- ¥66 如何制作支付宝扫码跳转到发红包界面