在二进制文件中搜索和替换

时间:2015-04-14 09:58:39

标签: python python-3.x file-io replace binary

首先,我尝试了这些问题但并不适合我:

我正在以二进制方式操作pdf文件。我需要用其他字符串替换字符串。

这是我的方法:

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

with open("proof.pdf", "rb") as input_file:
    content = input_file.read()
    if b"21.8182 686.182 261.818 770.182" in content:
        print("FOUND!!")
    content.replace(b"21.8182 686.182 261.818 770.182", b"1.1 1.1 1.1 1.1")
    if b"1.1 1.1 1.1 1.1" in content:
        print("REPLACED!!")

with open("proof_output.pdf", "wb") as output_file:
    output_file.write(content)

当我运行脚本时,它会显示" FOUND !!",但不会"更换!!"

1 个答案:

答案 0 :(得分:2)

这是因为python string replace中的subre不执行就地替换。在这两种情况下,你都会得到另一个字符串。

替换: -

content.replace(b"21.8182 686.182 261.818 770.182", b"1.1 1.1 1.1 1.1")

content = content.replace(b"21.8182 686.182 261.818 770.182", b"1.1 1.1 1.1 1.1")

这应该有用。