python - 如果文件同时包含二进制代码和文本,如何使用 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文件的情况下替换它?
解决方案
我最近遇到了这个问题,并尝试了评论中提到的建议。
这是对我有用的最终解决方案:
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
是因为我只想替换该字符串的一个实例。
您可以根据需要更改/删除。
推荐阅读
- elasticsearch - Painless: Get time difference
- python - DJANGO 将 AJAX 请求中的新结果值渲染到 HTML 页面
- reactjs - React Profiler - 开始分析并重新加载页面?
- matlab - 如果输入数字列表而不是单个数字,则函数返回错误数据
- angular - 在Angular 2中将数据从父视图传递到子视图
- ruby-on-rails - 在 Rails 应用程序中添加具有多个 SMTP 服务器的 ActionMailer
- javascript - 无论数组大小如何,随机获取半个字符串数组
- javascript - 使用 javascript 在小型设备上单击锚链接时使我的下拉菜单崩溃
- c# - 动态转换具有多个值的实例数组
- json - 使用 Circe JsonKey 时无法解码