如果文件同时包含二进制代码和文本,如何使用python替换文本?

如果文件同时包含二进制代码和文本,如何使用python替换文本?,python,houdini,Python,Houdini,我想替换Houdini文件(.hip)的文本,它包含二进制代码和文本的混合。我有替换文本文件的python代码。当我尝试替换Houdini文件中的文本时,替换后的文件会损坏 有人能告诉我如何替换Houdini文件中的文本而不损坏它吗 代码: import fileinput,sys for line in fileinput.input("file_name",inplace=True): line = line.replace("from","to") sys.stdout.w

我想替换Houdini文件(.hip)的文本,它包含二进制代码和文本的混合。我有替换文本文件的python代码。当我尝试替换Houdini文件中的文本时,替换后的文件会损坏

有人能告诉我如何替换Houdini文件中的文本而不损坏它吗

代码:

import fileinput,sys
for line in fileinput.input("file_name",inplace=True):
    line = line.replace("from","to")
    sys.stdout.write(line)
当我尝试使用此代码替换Houdini文件(.hip)时,该文件就会损坏


有人知道如何在不打开Houdini文件的情况下替换它吗?

我最近遇到了这个问题,并尝试了评论中提到的建议。
以下是对我有效的最终解决方案:

import re
def UpdateFile(self, file, oldstrg, newStr):
    bytetofind = bytes(oldstrg, encoding='utf-8')
    bytetoreplace = bytes(newStr, encoding='utf-8')
    f = open(file, 'rb+')
    text = f.read()
    text = re.sub(bytetofind , bytetoreplace, text, count=1)
    f.seek(0)
    f.write(text)
    f.close()
之所以存在
count=1
,是因为我只想替换该字符串的一个实例。

您可以根据需要更改/删除文件。

您是否尝试过以二进制模式打开文件?不,让我试试……文件格式可能会对字符串长度进行编码……您能告诉我们有关该格式的信息吗?我倾向于否决“请为我变魔术,但我会让你猜!”Houdini文件使用.hip扩展来解释一切。