打开并读取目录中的所有二进制文件并输出到列表 - Python

Open and read all binary files from directory an output to lists - Python

(我很欣赏这听起来像是重复的,但我试过很多东西都没有运气)

我正在尝试将包含二进制数据的多个 .pkt 文件的全部内容输出为一系列十六进制列表:(改编自 How to open every file in a folder?

import glob
path = 'filepath' for filename in glob.glob(os.path.join(path, '*.pkt')):    
   with open(os.path.join(os.getcwd(), filename), 'rb') as f:
   pair_hex = ["{:02x}".format(c) for c in f.read()]
   print(pair_hex)

#output
['09', '04', '04', '04', '04', '04', '04', '04', '04', '0b', '09']
['09', '04', 'bb']
['09', 'bb']
['bb']
['09', '04', '0b', '09']

输出是有意义的,因为我正在遍历文件,但我需要的是:

[['09', '04', '04', '04', '04', '04', '04', '04', '04', '0b', '09'],['09', '04', 'bb'],['09', 'bb'],['bb'],['09', '04', '0b', '09']]

所以我可以操纵所有数据。

我尝试应用 append(), "".join(), map() 和 itertools (How to merge multiple lists into one list in python?),但没有任何改变输出。我意识到这可能很简单,但我对 Python 很陌生,所以不确定是否最好继续。

提前致谢!

未测试但尝试

import glob, os
path = 'filepath'
ret = []
for filename in glob.glob(os.path.join(path, '*.pkt')):    
    with open(os.path.join(os.getcwd(), filename), 'rb') as f:
        pair_hex = ["{:02x}".format(c) for c in f.read()]
        ret.append(pair_hex)

print(ret)

上面在我的控制台上打印了以下内容,这与您的“所需输出”相同

[['09', '04', '04', '04', '04', '04', '04', '04', '04', '0b', '09'], ['09', '04', 'bb'], ['09', 'bb'], ['bb'], ['09', '04', '0b', '09']]

这就是我用来在我的机器上创建 .pkt 文件的方法,out 设置为“所需输出”的复制粘贴

out = [['09', '04', '04', '04', '04', '04', '04', '04', '04', '0b', '09'],['09', '04', 'bb'],['09', 'bb'],['bb'],['09', '04', '0b', '09']]

for i, a in enumerate(out):
    with open(f"{i}.pkt", 'w') as f:
        f.write(''.join(map(lambda s: chr(int(s, 16)), a)))