编写程序,用户在命令提示行输入文件名和该文件的编码格式,读入文件,将其转存成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