第一次使用python应用程序,当然这并不容易;)用简单的英语,这就是我想要做的事情:
读取二进制文件,如果有任何字节为0x00,则将其更改为0xFF,否则将0x01添加到每个字节并写入新文件。
所以它就是......我的希望就像是
./ convert.py file1.bin file2.bin
这是我到目前为止所拥有的:
#!/usr/bin/env python3
import sys
with open(sys.argv[1], "rb") as f:
byte = f.read(1)
while byte:
# Do stuff with byte.
if byte = b'\x00'
byte = b'\xFF'
else
byte = byte + b'\x01'
byte = f.read(1)
但是到目前为止我所拥有的一切......显然这是非常破碎的。我认为这将是一个很好的学习机会...感谢您提供的任何帮助。
答案 0 :(得分:1)
首先,if byte = b'\x00'
行中有一个错误,您的意思是==
。这是软件开发中最危险的错误之一,这就是为什么python不允许在条件内进行赋值的原因。
其次,更好地检查字节长度,因为python从文件中读取字节作为bytes
的列表。因此,在文件的末尾,您将获得一个bytes
的空列表。
现在代码:
#!/usr/bin/env python3
import sys
with open(sys.argv[1], "rb") as fin, open(sys.argv[2], "wb") as fout:
byte = fin.read(1)
while len(byte):
# Do stuff with byte.
if byte == b'\x00'
byte = b'\xFF'
else
byte = bytes((ord(byte) - 1,))
fout.write(byte)
byte = fin.read(1)