- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个很奇怪的错误。我有一个每天运行的 cronjob:它打开一个 pickled 文件,加载该文件,然后处理数据。在脚本结束时,它会将数据保存到该文件以供第二天处理。
大多数时候,这个脚本运行良好,但有时(我会说一个月两次)打开该文件时,会引发 EOFError:
Traceback (most recent call last):
File "read.py", line 11, in <module>
SellerDictionarycf=pickle.load(SellerDict)
EOFError
我坚信没有其他进程正在处理该文件,我 100% 确定我写入数据,在读取之前关闭该文件。
我的代码片段在脚本开头读取文件:
SellerDict=open('/home/hostadl/SellerDictab','rb')
SellerDictionaryab=pickle.load(SellerDict)
SellerDict.close()
我的代码片段在脚本末尾写入文件:
SellerDict=open('/home/hostadl/SellerDictab','wb')
pickle.dump(SellerDictionaryab,SellerDict)
SellerDict.flush()
SellerDict.close()
我保存了损坏文件的副本(读取时引发 EOFError 的文件),然后使用 pickletools 检查它,这是错误:
python3.2 -m pickletools -o test.txt SellerDictab
Traceback (most recent call last):
File "/usr/local/lib/python3.2/runpy.py", line 160, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/local/lib/python3.2/runpy.py", line 73, in _run_code
exec(code, run_globals)
File "/usr/local/lib/python3.2/pickletools.py", line 2403, in <module>
args.indentlevel, annotate)
File "/usr/local/lib/python3.2/pickletools.py", line 1963, in dis
for opcode, arg, pos in genops(pickle):
File "/usr/local/lib/python3.2/pickletools.py", line 1874, in genops
arg = opcode.arg.reader(pickle)
File "/usr/local/lib/python3.2/pickletools.py", line 474, in read_unicodestring4
"remain" % (n, len(data)))
ValueError: expected 2254 bytes in a unicodestring4, but only 0 remain
test.txt 仍然有数据,这里是头和尾:
head test.txt
0: \x80 PROTO 3
2: } EMPTY_DICT
3: q BINPUT 0
5: ( MARK
6: X BINUNICODE 'bradey4357604769'
27: q BINPUT 1
29: ] EMPTY_LIST
30: q BINPUT 2
32: ] EMPTY_LIST
33: q BINPUT 3
tail test.txt
18933166: e APPENDS (MARK at 18930621)
18933167: ] EMPTY_LIST
18933168: r LONG_BINPUT 174342
18933173: ( MARK
18933174: X BINUNICODE 'HP PhotoSmart C4480 All-in-One Printer'
18933217: r LONG_BINPUT 174343
18933222: G BINFLOAT 45.0
18933231: G BINFLOAT 84104.0
18933240: X BINUNICODE 'Salt Lake City, UT '
18933265: r LONG_BINPUT 174344
对于好的文件(没有 EOFError)这里是头和尾:
head testgood.txt
0: \x80 PROTO 3
2: } EMPTY_DICT
3: q BINPUT 0
5: ( MARK
6: X BINUNICODE 'bj8016541577'
23: q BINPUT 1
25: ] EMPTY_LIST
26: q BINPUT 2
28: ( MARK
29: ] EMPTY_LIST
tail testgood.txt
16569368: X BINUNICODE 'Bought this beautiful dinner set but never opened it, I would love to get rod of it pleas tex with an offer...'
16569483: r LONG_BINPUT 161843
16569488: J BININT 20177894
16569493: X BINUNICODE 'antonio8016497082'
16569515: r LONG_BINPUT 161844
16569520: e APPENDS (MARK at 16569283)
16569521: e APPENDS (MARK at 16568508)
16569522: u SETITEMS (MARK at 16088830)
16569523: . STOP
那么这个问题的原因可能是什么(比如字符串数据中的奇怪字符)?我对这个问题一无所知。
最佳答案
看起来您的磁盘空间用完了(或者出于类似原因无法写入完整文件)。
一个更惯用的版本(你不需要担心调用 close/flush)是:
with open('/home/hostadl/SellerDictab','rb') as SellerDict:
SellerDictionaryab=pickle.load(SellerDict)
with open('/home/hostadl/SellerDictab','wb') as SellerDict:
pickle.dump(SellerDictionaryab,SellerDict)
关于python 3.2 pickle.load 随机导致 EOFError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10407772/
从 Rails 控制台使用 MailChimp gem 时出现间歇性错误。 这是错误: Excon::Errors::SocketError: EOFError (EOFError) from /
我正在使用 tkinter 和 urllib 制作这个程序,它应该像一个下载管理器。在我几乎完成该程序后,我意识到我没有为下载定义取消按钮。在深入研究之后,我发现了多处理(在此之前我只是使用线程),显
当我尝试 chown 一个目录时,Fabric 给我一个 EOFError。只有当我从 fabric 之前运行的 python 脚本运行子进程时才会发生。 来 self 的 fabfile: ...
当我使用来自其他脚本的子进程启动我的 python3 脚本时,出现以下错误: Select the keyword preset you want to use:Traceback (most rec
编辑:我很蠢 对不起大家。我的循环不工作的原因是一个极其愚蠢的原因;我的 pickle.dump() 参数顺序错误。 操作 第一次 pickle 物体,抱歉,如果这是一个棘手的问题;看过各种其他 EO
我有一堆客户端通过 0MQ 连接到服务器。我有一个管理器队列,用于工作池与每台客户端计算机上的主进程进行通信。 在一台有 250 个工作进程的客户端机器上,我几乎立即看到一堆 EOFError。它们发
这可能会重复,但现有的答案都没有解决我的问题。 因此,我使用的是 Python 2.7,每当我尝试此操作时都会收到此错误(标题): number = int(raw_input('Number : '
这个问题在这里已经有了答案: Unable to install pygame on Python via pip (Windows 10) (6 个答案) 关闭 2 年前。 我正在使用 Windo
我正在尝试使用 pickle 为我的游戏创建一个保存文件,但是当我尝试提交我的字典,然后取回该信息时,它不起作用。 import pickle data = {'health':100, 'gold'
我读取了一个只包含一行的文件。但是,在循环结束之前我无法停止读取文件。即 python 不会抛出 EOFError 异常。我的代码有什么问题吗? for x in range(5): try:
我有一个简单的程序,我使用 pygame 导入声音,但它仍然是一个 CLI 程序。每当我将它编译成一个 exe 时,当我尝试运行它时它会给我一个 EOFError,它看起来像这样 Traceback
我最近发现了 pickle,这很神奇。但是当它用于我的实际脚本时,它对我来说是错误的,用一个单项字典测试它工作正常。我的真实脚本是数千行代码,其中存储了 Maya 中的各种对象。我不知道它是否与大小有
我有几个脚本在服务器上运行,可以对各种词典进行 pickle 和 unpickle。它们都使用相同的基本代码进行 pickle ,如下所示: SellerDict=open('/home/hostad
我有以下代码片段: def database(self): databasename="" host="" user="" password="" try:
我正在读取 CSV 作为 Spark DataFrame 并对其执行机器学习操作。我不断收到 Python 序列化 EOFError - 知道为什么吗?我认为这可能是一个内存问题——即文件超出了可用
当我运行下面的代码时,我收到此错误消息“EOFError: Ran out of input”这是什么意思??怎么才能矫正??以及如何在屏幕上输出记录的详细信息。 import pickle # th
为什么我在运行 django 服务器时会出现以下错误,我该如何解决? : EOFError: marshal data too short 细节 Performing system checks...
尝试创建用户时,我在生产中遇到此错误(我正在使用devise gem)。 EOFError (end of file reached): 我之前遇到此问题,这是由于我使用zoho mail的smtp设
我正在努力解决这一问题,我们将不胜感激! 我有两个Rails应用程序,我们称它们为Client and Service,它们都是非常简单的普通REST界面-这是基本方案: 客户端向服务发出POST/r
一切正常,直到: celery beat v3.1.18 (Cipater) is starting. __ - ... __ - _ Configuration ->
我是一名优秀的程序员,十分优秀!