检索文件夹中的所有腌制数据

Retrieve all pickled data in a folder

我是 Python 的新手。

我将矩阵保存在特定文件夹中 .pkl。 我想在这个文件夹上用 for 循环检索腌制数据。 我还希望新变量与我从中读取数据的文件同名。

最后,我想要的是对文件夹Output

中的所有数据进行下面的操作
with open('../Output/MatrixA.pkl', 'rb') as fin:
     MatrixA = pickle.load(fin)

使用 sys.modulessetattr 会很有魅力:

import pickle
from sys import modules
from os import listdir

main_script = modules['__main__']

for file in [path for path in listdir() if path.endswith('pk1')]:
    with open(file, "rb") as fp:
        setattr(main_script, fp.name.split('.')[0], pickle.load(fp))


print(a, b, c, d, e, sep='\n')

用于生成示例文件的代码 - a~e.pk1:

import pickle

for i, n in enumerate('abcde'):
    with open(f"{n}.pk1", "wb") as fp:
        pickle.dump([*iter(range(i))], fp)

输出:

[]
[0]
[0, 1]
[0, 1, 2]
[0, 1, 2, 3]

但是,如果您将那些 pickles 转换为 json 会更好,因为 pickled 文件 相关的 到 python 版本,并且是潜在的威胁。

使用它来转换目录中的所有 .pk1

import json
import pickle
from os import listdir


for file in [path for path in listdir() if path.endswith('pk1')]:
    with open(file, "rb") as fp:
        with open(file.split('.')[0] + ".json", "wt") as fp_json:
            json.dump(pickle.load(fp), fp_json)