【发布时间】:2020-06-30 13:36:07
【问题描述】:
当我从文件中读取字节时,使用
open("file.txt", "rb"")python 在字节的开头和结尾添加括号,如列表。
我尝试使用 re.sub 手动剪切括号,但因为它是一个列表,所以我收到一个错误代码 TypeError: expected string or bytes-like object,因为它是一个列表。
(我在下面使用f.readlines(0) 而不是普通的文件读取的原因是因为我在这个文件中存储了其他变量)
>>> foo = os.urandom("128")
>>> print(foo)
b'\xb9\xfe\xeb\x03e\xe8\x8e\x0c\xc1\x05\xb1\xe8\xadB\x9d\xdf_-\xd2\x8c\x18\xe2\xb2\xc7\xf9I\x18\xa7(\xefe\xc9\xc4:\xb3\x93\n+\x7f\x8e\xd2\x82\xf0!\x9668\x01\xcdf\x0f\x15\xe6r\xec\x01\xb8\x7f\x8d\xa25\xd6yq\x1e#\xfb\x0eY\x0fE\x1a)V\xb2\xcb_\x89yH\xd9\xf9\xc7.\x12\x98\x16\xe4!k\xdfU>\xa2\xf0H\xcbT3.\xbd\xbdn\x8aU<\xeb\xf7\xca\xd6~\xf2R\xca\x0f\x8f\x9d\xce\xd8D\xa6f,H\xf8\xcc\xca\x1f'
>>> f = open("t.text", "wb")
>>> f.write(foo)
>>> f.close()
>>> f = open("t.text", "rb")
>>> bar = f.readlines(0)
>>> print(bar)
[b'\xb9\xfe\xeb\x03e\xe8\x8e\x0c\xc1\x05\xb1\xe8\xadB\x9d\xdf_-\xd2\x8c\x18\xe2\xb2\xc7\xf9I\x18\xa7(\xefe\xc9\xc4:\xb3\x93\n', b'+\x7f\x8e\xd2\x82\xf0!\x9668\x01\xcdf\x0f\x15\xe6r\xec\x01\xb8\x7f\x8d\xa25\xd6yq\x1e#\xfb\x0eY\x0fE\x1a)V\xb2\xcb_\x89yH\xd9\xf9\xc7.\x12\x98\x16\xe4!k\xdfU>\xa2\xf0H\xcbT3.\xbd\xbdn\x8aU<\xeb\xf7\xca\xd6~\xf2R\xca\x0f\x8f\x9d\xce\xd8D\xa6f,H\xf8\xcc\xca\x1f\xcc\x96\xaa\x9d\xc5\xebE\xc8\x0b\xe6G"\xb9\xf1T\x80']
如何将其读取为字节而不是列表? (我将其他字节存储在不同的行上,这个在第 1 行,另一个在第 2 行。我不能将它们存储在不同的文件中)。
编辑:解决方案是:f.read(data_size)。
【问题讨论】:
-
阅读全文只需
f.read(),只需一行next(f) -
@Jean-FrançoisFabre 正如我所说,每一行都是不同的变量,因此我不能只做 f.read()。
-
f.readlines返回一个列表。你不能让它返回一个列表以外的任何东西。但是,您可以检索此列表的元素。 (你确实知道括号表示一个列表,对吧?) -
想要逐行读取二进制文件有点奇怪。如果它有线条,那不是文字吗?
标签: python python-3.x