首页 > 解决方案 > 如果文件同时包含二进制代码和文本,如何使用 python 替换文本?

问题描述

我想替换包含二进制代码和文本混合的 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文件的情况下替换它?

标签: pythonhoudini

解决方案


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

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


推荐阅读