Pickle 在文件不为空时给出 运行 out input
Pickle give Ran out of input while the file is not empty
也许这个问题在 stackoverflow 中被问过很多次了。但是我找不到我的代码的解决方案。
所以,这是一个非常简单的 Def 从名为 eleve.dat 的文件中获取数据,然后将其放入使用该文件中 类 中的数据的方式列表。
所以这是我的代码:
def show() :
E = []
file = open("d:\BullApp\eleve.dat", 'rb')
ch =""
while True :
e = load(file)
E.append(e)
虽然 运行 它使用 Qt5 按钮 (这是学校项目的应用程序),但它给了我这个 error :
我想提一下二进制文件 eleve.dat 不为空 和其他填充函数文件完美运行。
所以,我希望我能找到解决方案,请不要重复我的问题,因为我还没有找到答案。
提前致谢。
从代码看来你有一个无限循环。目前我只能想到两个最适合你的选项。
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()))
你可以阅读 pickle here。简短:)
也许这个问题在 stackoverflow 中被问过很多次了。但是我找不到我的代码的解决方案。
所以,这是一个非常简单的 Def 从名为 eleve.dat 的文件中获取数据,然后将其放入使用该文件中 类 中的数据的方式列表。
所以这是我的代码:
def show() :
E = []
file = open("d:\BullApp\eleve.dat", 'rb')
ch =""
while True :
e = load(file)
E.append(e)
虽然 运行 它使用 Qt5 按钮 (这是学校项目的应用程序),但它给了我这个 error :
我想提一下二进制文件 eleve.dat 不为空 和其他填充函数文件完美运行。
所以,我希望我能找到解决方案,请不要重复我的问题,因为我还没有找到答案。
提前致谢。
从代码看来你有一个无限循环。目前我只能想到两个最适合你的选项。
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()))
你可以阅读 pickle here。简短:)