我刚刚学会写python语言,我要如何进行自动换行输出?
我已经完成了谷歌搜索,结果不存在,或者不知道关键字
代码是这样的:
import binascii
filename = 'file.pdf'
with open(filename, 'rb') as f:
content = f.read()
print(binascii.hexlify(content))
结果将是这样,仅一行:
255044462d312e340a25c3a4c3bcc3b6c39f0a322
但是我想这样,例如用10个字符包装:
0x25, 0x50, 0x44, ...
有人可以帮助我吗?谢谢!
答案 0 :(得分:1)
您可以使用textwrap模块来包装x个字符。
这是使用textwrap的代码。
import binascii
import textwrap
filename = 'file.pdf'
with open(filename, 'rb') as f:
content = f.read()
temp = binascii.hexlify(content)
temp_hex = []
# convert bytes to hexadecimal value
for t in temp:
temp_hex.append(hex(t))
# join the hexadecimal value using "," and wrap with maximum 10 characters each rows
print(textwrap.fill(",".join(temp_hex), 10))
答案 1 :(得分:0)
写一个生成器,将字符串分成相等大小的块,然后用它分成20个块,再分成长度为2的较小块:
def split_string(s, chunk_length):
for i in range(0, len(s), chunk_length):
yield s[i:i+chunk_length]
hex = binascii.hexlify(content)
for line in split_string(hex, 20): # divide into chunks of length 20
print(*split_string(line, 2), sep=", ") # then into chunks of length 2
答案 2 :(得分:0)
首先编写一个custom_hexlify
函数,该函数通过使用hex
输出所需的格式。
text = b'foo bar'
def custom_hexlify(data):
return ', '.join([hex(c) for c in data])
print(custom_hexlify(text)) # 0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72
要包装文字,您可以使用textwrap.wrap
。
def print_wrapped_line(*args, **kwargs):
for line in textwrap.wrap(*args, **kwargs):
print(line)
print_wrapped_line(custom_hexlify(text), 20)
0x66, 0x6f, 0x6f,
0x20, 0x62, 0x61,
0x72