On 03/04/2014 02:44 PM, Chris Angelico wrote:
On Wed, Mar 5, 2014 at 12:18 AM, Peter Otten <__pete...@web.de> wrote:
loial wrote:
How do I read a binary file, find/identify a character string and replace
it with another character string and write out to another file?
Its the finding of the string in a binary file that I am not clear on.
That's not possible. You have to convert either binary to string or string
to binary before you can replace. Whatever you choose, you have to know the
encoding of the file.
If it's actually a binary file (as in, an executable, or an image, or
something), then the *file* won't have an encoding, so you'll need to
know the encoding of the particular string you want and encode your
string to bytes.
On 2.7 it's as easy as it sounds without having to think much about
encodings and such. I find it mostly just works.
emile@paj39:~$ which python
/usr/bin/python
emile@paj39:~$ python
Python 2.7.3 (default, Sep 26 2013, 16:38:10)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> image = open('/usr/bin/python','rb').read()
>>> image.find("""Type "help", "copyright", "credits" """)
1491592
>>> image = image[:1491592]+"Echo"+image[1491592+4:]
>>> open('/home/emile/pyecho','wb').write(image)
>>>
emile@paj39:~$ chmod a+x /home/emile/pyecho
emile@paj39:~$ /home/emile/pyecho
Python 2.7.3 (default, Sep 26 2013, 16:38:10)
[GCC 4.7.2] on linux2
Echo "help", "copyright", "credits" or "license" for more information.
YMMV,
Emile
--
https://mail.python.org/mailman/listinfo/python-list