文件原地批量替换时遭遇UnicodeDecodeError错误求助
解决fileinput的UnicodeDecodeError问题
嘿,我来帮你搞定这个编码报错的问题!你遇到的UnicodeDecodeError是因为fileinput默认会用系统的默认字符编码(比如Windows上的cp1252这类charmap编码)打开文件,而你的文件里存在这个编码无法识别的字节,导致解码失败。
修复后的代码
只需要给fileinput.FileInput加上指定编码的参数,就能解决这个问题了。优先推荐用UTF-8编码(如果你的文件是这个编码的话),代码如下:
import fileinput # 替换成你要处理的实际文件名 filename = "your_target_file.txt" with fileinput.FileInput(filename, inplace=True, backup='.bak', encoding='utf-8') as file: for line in file: # 先把制表符替换成◊,再把⁞替换回制表符 processed_line = line.replace('\t', '◊').replace('⁞', '\t') print(processed_line, end='')
额外说明
- 如果你的文件不是UTF-8编码(比如GBK、GB2312等),就把
encoding='utf-8'换成对应的编码名称就行。 - 要是不确定文件的编码,可以用Notepad++这类编辑器打开文件,右下角会显示当前文件的编码,直接照搬就行。
- 万一还是有解码问题,可以临时加上
errors='replace'参数(比如encoding='utf-8', errors='replace'),它会把无法解码的字符替换成占位符,避免报错,但可能会丢失少量字符信息,所以优先推荐找对文件编码。
内容的提问来源于stack exchange,提问作者Sandu Ursu
相关产品推荐
相关产品推荐

