【问题标题】:Pickle give Ran out of input while the file is not empty当文件不为空时,Pickle 给出 Ran out of input
【发布时间】:2021-03-22 12:39:04
【问题描述】:

也许这个问题已经在 stackoverflow 中被问过很多次了。但我找不到我的代码的解决方案。

所以,这是一个非常简单的 Def,它从名为 eleve.dat 的文件中获取数据,然后将其放入列表中以使用来自在该文件中。

这是我的代码:

def show() :
E = []
file = open("d:\BullApp\eleve.dat", 'rb')
ch =""

while True :
    e = load(file)
    E.append(e)

使用 Qt5 按钮运行它(这是一个学校项目的应用程序)它给了我这个错误

我想提一下,二进制文件 eleve.dat 不是空的 并且填充文件的其他功能完美运行。

所以,我希望我能找到解决方案,请不要将我的问题设为重复,因为我还没有找到答案。

提前致谢。

【问题讨论】:

    标签: python list file pickle


    【解决方案1】:

    从代码看来你有一个无限循环。目前我只能想到 2 个最适合您的选项。
    1 - 通过打印它们来检查你是否真的得到了价值

    ...
    while True :
        e = load(file)
        print(e)
        E.append(e)
    

    如果是,那么您可以像这样在文件末尾终止

    ...
    while True :
        try:
            e = load(file)
            print(e)
            E.append(e)
        except EOFError:
            pass
    

    2 - 我个人最喜欢保存和加载数据,我的 save_and_load.py 脚本。

    import pickle
    def save(data, file_name):
        with open(file_name + '.dat', 'wb') as f:
            f.write(pickle.dumps(data))
    
    def load(file_name):
        with open(file_name + '.dat', 'rb') as f:
            return(pickle.loads(f.read()))
    

    您可以阅读有关泡菜的信息here。简短而简单:)

    【讨论】:

      猜你喜欢
      • 2014-09-07
      • 1970-01-01
      • 2022-12-12
      • 1970-01-01
      • 2020-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多