在python上打开和关闭大量文件

2024-05-13 03:32:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个程序来组织我的学业成绩,并且为每一个我创造的科目做一个测试文件.pck那门学科的所有标记都保存在哪里了。因为我必须打开pickle.加载10多个文件我决定做2个函数,files\u open():

subj1 = open(subj1_file)
subj1_marks = pickle.load(subj1)
subj2 = open(subj2_file)
subj2marks = pickle.load(subj2)

和文件\u close():

subj1.close()
subj2.close()

问题是我必须使文件\ u open()中的每个变量都是全局变量,而现在的函数太长了。我试图通过调用如下变量来避免这个问题:

file_open.subj1

但它确实有效,我不明白为什么。你知道吗


Tags: 文件函数标记程序closeloadopenpickle
1条回答
网友
1楼 · 发布于 2024-05-13 03:32:12

因为您只想在以后打开、加载和关闭文件,所以我建议使用一个简单的助手函数:

def load_marks(filename):
    with open(filename,"rb") as f:  # don't forget to open as binary
         marks = pickle.load(f)
    return marks

像这样使用:

subj1_marks = load_marks(subj1_file)

当文件超出with块的作用域时,该文件将被关闭,并且即使该文件已关闭,您的数据仍然可以访问,这可能是您(不合理)关心的问题。你知道吗

注意:有人建议,您真正想要(也许)的是将所有数据保存在一个大pickle文件中。 在这种情况下,您可以创建一个包含数据的字典:

d = dict()
d["mark1"] = subj1_marks
d["mark2"] = subj2_marks
...

在字典上执行一个pickle.dump()pickle.load()(如果数据是可拾取的,那么这个数据的字典也是可拾取的):处理一个大文件比处理很多文件要简单,因为您知道无论如何都需要它们。你知道吗

相关问题 更多 >