如何将 .reg 文件复制到 Python 中的纯 .txt?

How do I copy .reg file to pure .txt in Python?

I file.readline() 一些注册表文件,以便过滤掉一些子字符串。我正在使用 shutil.copyfile() 制作它的副本(只是为了保留原件),由 foo() 处理并且没有看到任何过滤掉的东西。试过调试,行的内容非常二进制:

'˙ţW\x00i\x00n\x00d\x00o\x00w\x00s\x00 \x00R\x00e\x00g\x00i\x00s\x00t\x00r\x00y\x00 \x00E\x00d\x00i\x00t\x00o\x00r\x00 \x00V\x00e\x00r\x00s\x00i\x00o\x00n\x00 \x005\x00.\x000\x000\x00\n'

这很明显,但没有意识到这一点(Notepad++ 整洁的文本呈现)。我的问题是:如何过滤掉我的字符串? 我看到两个选项,它们是 reg->txt->reg 方法(我的标题的意思)或将那里的字符串转换为字节,然后将它们与内容进行比较。

当我手动创建文件(复制并粘贴输入文件的内容)并给它们 .txt 时,一切正常,但我希望它可以自动化。

inputfile = "filename_in.reg"
outputfile = "filename_out.reg"
copyfile(inputfile, output file)

with open(outputfile, 'r+') as fd:
    contents = fd.readlines()
    for d in data:
        foo(fd, d, contents)

Reg 文件通常是 UTF-16(通常在 MS 文档中称为 "Unicode"。看起来您的调试将数据视为 8 位字符(因此有很多 \x00为16位字符的高位字节)。可以说服Notepad++显示UTF-16。

解决方法是告诉 Python 您正在阅读的文本是 UTF-16 格式:

open(outputfile, 'r+', encoding='utf16')