【问题标题】:How do I copy .reg file to pure .txt in Python?如何在 Python 中将 .reg 文件复制到纯 .txt?
【发布时间】:2019-07-02 09:47:45
【问题描述】:

我 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)

【问题讨论】:

  • 完全就是这样。您可能想将其添加为回复,因此我可以接受。非常感谢 - 小事,但非常感谢:)
  • 完成 - 只发表评论,因为我不确定是否会修复它 - 但我希望它至少能让你开始。

标签: python encoding shutil text-manipulation


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 2023-02-10
    • 2020-04-01
    • 2021-05-21
    • 1970-01-01
    相关资源
    最近更新 更多