如何在Python中将.reg文件复制到pure.txt?

2024-05-16 22:34:29 发布

您现在位置: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\x00\x005\x00

这是相当明显的,但没有意识到这一点(记事本++整洁的文本表示)。我的问题是:如何过滤我的字符串? 我看到两个选项,它们是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)

Tags: 文件字符串内容fooregfilex00fd
1条回答
网友
1楼 · 发布于 2024-05-16 22:34:29

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

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

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

相关问题 更多 >