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

时间:2018-06-15 09:31:35

标签: python houdini

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

任何人都可以告诉我如何替换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文件而不打开它吗?

1 个答案:

答案 0 :(得分:0)

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

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在那里是因为我只想替换该字符串的单个实例。
您可以根据需要进行更改/删除。