每当程序打开文件时,它都会将该文件视为二进制数据。它将它翻译成更高的解释性语言,即八进制、十六进制、ascii 等。在这种情况下,它在左侧窗格中显示十六进制,在右侧窗格中显示 ansi(Windows 7,因此它应该是 CP1252)。下面的 3 张图片说明了原始视图,然后是所需的更改,第 3 张是代码所做的实际更改:
with open(tar,'rb') as f:
data = binascii.hexlify(f.read(160))
if old in data:
print 'found!'
data = data.replace(old, new)
else:
print 'not found'
with open(tar+'new', 'wb') as fo:
binascii.unhexlify(data)
fo.write(data)
我显然没有正确定位写入传递方法。