我正在尝试学习如何在Python中执行此操作,使用psuedo代码进行游戏,但不能提出任何值得一分钱的东西
with open(file, "rb") as f:
byte = f.read(20) # read the first 20 bytes?
while byte != "":
print f.read(1)
最后,我想得到一个能够满足以下要求的代码:https://stackoverflow.com/a/2538034/2080223
但是我当然有兴趣学习如何到达那里,所以任何指针都会受到很大的谴责!
答案 0 :(得分:5)
非常接近
with open(file, "rb") as f:
byte = f.read(20) # read the first 20 bytes? *Yes*
确实会读取前20个字节。
但是
while byte != "":
print f.read(1) # print a single byte?
将(正如您所期望的)读取单个字节并打印出来,但它将永久打印,因为您的循环条件将始终为真。
目前还不清楚你想要做什么,但是如果你只想打印一个字节,那么删除while循环就可以了:
print f.read(1)
如果要打印单个字节直到文件结尾,请考虑:
while True:
byte = f.read(1)
if byte == "": break
print byte
或者,如果您在前20个内容中查找特定字节,则可以使用可迭代索引:
byte
或者正如Lucas在评论中建议的那样,你可以遍历字符串with open(file, "rb") as f:
byte = f.read(20)
print byte[0] # First byte of the 20 bytes / first byte of the file
print byte[1] # Second byte of the 20 bytes / ...
# ...
(顺便说一句,它是从byte
返回的字符串):
read()
您可能也对字节的位置感兴趣,并且它是十六进制值(对于像0x0a,0x0d等的值):
with open(file, "rb") as f:
byte = f.read(20)
for b in byte:
print b