我使用cPickle来使用HIGHEST_PROTOCOL来挑选整数列表,
cPickle.dump(l, f, HIGHEST_PROTOCOL)
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下代码解开这个时,我得到一个EOFError.在解开前我尝试'寻找'偏移0,但错误仍然存在.
l = cPickle.load(f)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
在官方文件没有明确规定.我理解EOFError的意思是"文件结束错误",但究竟是什么意思呢?如果文件阅读器到达文件末尾,那对我来说听起来不是一个错误.
从脚本创建exe后py2exe
raw_input()
导致EOFError.
我怎么能避免这个?
File "test.py", line 143, in main
raw_input("\nPress ENTER to continue ")
EOFError: EOF when reading a line
Run Code Online (Sandbox Code Playgroud) 我有以下代码片段:
def database(self):
databasename=""
host=""
user=""
password=""
try:
self.fp=file("detailing.dat","rb")
except IOError:
self.fp=file("detailing.dat","wb")
pickle.dump([databasename,host,user,password],self.fp,-1)
self.fp.close()
selffp=file("detailing.dat","rb")
[databasename,host,user,password]=pickle.load(self.fp)
return
Run Code Online (Sandbox Code Playgroud)
它有错误:
Traceback (most recent call last):
File "detailing.py", line 91, in ?
app=myApp()
File "detailing.py", line 20, in __init__
wx.App.__init__(self,redirect,filename,useBestVisual,clearSigInt)
File "/usr/lib64/python2.4/site-packages/wx-2.6-gtk2-unicode/wx/_core.py", line 7473, in __init__
self._BootstrapApp()
File "/usr/lib64/python2.4/site-packages/wx-2.6-gtk2-unicode/wx/_core.py", line 7125, in _BootstrapApp
return _core_.PyApp__BootstrapApp(*args, **kwargs)
File "detailing.py", line 33, in OnInit
self.database()
File "detailing.py", line 87, in database
[databasename,host,user,password]=pickle.load(self.fp)
File "/usr/lib64/python2.4/pickle.py", line 1390, in load
return Unpickler(file).load()
File "/usr/lib64/python2.4/pickle.py", line 872, in …
Run Code Online (Sandbox Code Playgroud) 阅读有关此主题的几个问题后,我现在知道子进程从父进程继承了文件描述符。当父母关闭连接时,这会使孩子更难收到EOFError。
但是我的情况恰恰相反,我不明白我面临的问题。
我有一个父进程,该进程启动一个子进程,并使其能够访问我创建的Pipe连接的一端。现在,当子进程完成,出现故障或其他任何情况时,所有操作都将停止并关闭连接。此时,子进程显示为已失效。
然后,我希望父进程的连接在阻塞的recv调用上抛出EOFError。但是相反,它只是坐在那里等待。
我在这里想念什么?
编辑
我认为这个例子代表了问题:
from multiprocessing import Process, Pipe
from threading import Thread
import time
class Parent(object):
def __init__(self):
self.parent_conn, child_conn = Pipe()
self.child = Process(target=Child, args=(child_conn,))
self.child.start()
def recv():
try:
self.parent_conn.recv()
except EOFError:
print "EOF"
except:
print "something else"
# Does not work
recv()
# Works fine
t = Thread(target=recv)
t.setDaemon(True)
t.start()
def close(self):
self.parent_conn.close()
self.child.join()
class Child(object):
def __init__(self, conn):
conn.close()
if __name__ == "__main__":
p = Parent()
time.sleep(1)
p.close()
Run Code Online (Sandbox Code Playgroud)
如果我确实使用单独的线程,则允许父级关闭其自己的连接,并且一切正常。(请注意,您仍然需要以某种方式知道子进程是如何完成的。)相反,如果我直接调用recv,它将明显阻塞,但是我怀疑一旦子进程关闭其连接,它将引发EOFError。但事实并非如此。谁能澄清?
我正在关注此页面上的 rpyc 教程,但在运行此代码时出现 EOFError
bgsrv = rpyc.BgServingThread(conn) #creates a bg thread to process incoming events
Run Code Online (Sandbox Code Playgroud)
我已经搜索了很多,但没有找到解决这个问题的方法。服务器和客户端运行在同一台机器上。我在 macbook pro 上运行脚本。需要帮助修复此错误。
您可以在此处找到 stream.py 的源代码。
这是回溯:
Exception in thread Thread-10:
Traceback (most recent call last):
File"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 810, in __bootstrap_inner
self.run()
File"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 763, in run
self.__target(*self.__args, **self.__kwargs)
File "/Library/Python/2.7/site-packages/rpyc-3.3.0-py2.7.egg/rpyc/utils/helpers.py", line 204, in _bg_server
self._conn.serve(self.SERVE_INTERVAL)
File "/Library/Python/2.7/site-packages/rpyc-3.3.0-py2.7.egg/rpyc/core/protocol.py", line 387, in serve
data = self._recv(timeout, wait_for_lock = True)
File "/Library/Python/2.7/site-packages/rpyc-3.3.0-py2.7.egg/rpyc/core/protocol.py", line 345, in _recv
data = self._channel.recv()
File "/Library/Python/2.7/site-packages/rpyc-3.3.0-py2.7.egg/rpyc/core/channel.py", line …
Run Code Online (Sandbox Code Playgroud) 我正在运行 Sympathy for Data,这是一个基于 python 的程序。直到今天它都运行良好。我收到这样的错误消息:
File "..\Python27\lib\site-packages\win32com\client\__init__.py", line 11, in <module>
import gencache
File >"..\Python27\lib\site-packages\win32com\client\gencache.py", line 662, in <module>
_ _init_ _()
File >"..\Python27\lib\site-packages\win32com\client\gencache.py", line 56, in _ _init_ _
_LoadDicts()
File "..\Python27\lib\site-packages\win32com\client\gencache.py", line 109, in _LoadDicts
version = p.load()
EOFError
Run Code Online (Sandbox Code Playgroud)
我在这里找到了一个基本上有相同问题的答案,但该解决方案对我不起作用。我在网上找到的所有解决方案都提供相同的解决方案,删除 _gen_py_ 文件夹下的内容。
我不必使用 Sympathy 运行任何程序来获取数据。即使我打开随 Sympathy for data 一起提供的 iPython,我也会收到此错误消息。
在这种情况下我真的很绝望,有人可以帮我解决吗?
当我在我的代码中遇到以下问题时,我正在解决 HackerRank 上的一个问题。我在我的 Python (2.7.10) IDLE 上测试了它,它工作正常。但它在 HackerRank 上显示以下错误:
Traceback (most recent call last):
File "solution.py", line 13, in <module>
input_2=input()
EOFError: EOF when reading a line
Run Code Online (Sandbox Code Playgroud)
我输入了以下代码:
import sys
input_2=""
n=int(input())
m=0
l=0
array=[]
main_array=[]
for i in range (0,n):
inp=input()
array=(inp.split(" "))
main_array+=array
for no in range(0,100000,1):
input_2=input()
for m in range(0,len(main_array),2):
l=0
if input_2==main_array[m]:
l+=1
print (main_array[m]+"="+main_array[m+1])
if l==0:
print ("Not found")
Run Code Online (Sandbox Code Playgroud)
我不知道为什么这个错误出现在 HackerRank 引擎中。谢谢
我只有像这样的简单脚本,可以通过诺基亚路由器上的 SSH 连接并执行命令“show time”:
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('adres ip', port=22, username='username', password='password')
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('show time')
output = stdout.readlines()
print '\n'.join(output)
ssh.close()
Run Code Online (Sandbox Code Playgroud)
登录节点成功。我看到自己在路由器上,但执行命令不起作用。我收到这样的错误:
Traceback (most recent call last): File "C:\Users\pkudalsk\Desktop\pyt.py", line 6, in <module>
ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command('show time') File "C:\Users\pkudalsk\Desktop\paramiko\client.py", line 479, in exec_command
chan.exec_command(command) File "C:\Users\pkudalsk\Desktop\paramiko\channel.py", line 63, in _check
return func(self, *args, **kwds) File "C:\Users\pkudalsk\Desktop\paramiko\channel.py", line 241, in exec_comman d
self._wait_for_event() File "C:\Users\pkudalsk\Desktop\paramiko\channel.py", line 1198, in
_wait_for_ event
raise e EOFError …
Run Code Online (Sandbox Code Playgroud) 我在服务器上运行了几个脚本,这些脚本可以对各种字典进行pickle和unpickle.它们都使用相同的基本代码进行酸洗,如下所示:
SellerDict=open('/home/hostadl/SellerDictkm','rb')
SellerDictionarykm=pickle.load(SellerDict)
SellerDict.close()
SellerDict=open('/home/hostadl/SellerDictkm','wb')
pickle.dump(SellerDictionarykm,SellerDict)
SellerDict.close()
Run Code Online (Sandbox Code Playgroud)
除了其中一个脚本外,所有脚本运行正常.有问题的那个去各个网站并擦除数据并将其存储在字典中.这段代码运行一整天的酸洗和解毒词典,并在午夜停止.然后一个cronjob第二天早上又开始了.此脚本可以运行数周而不会出现问题,但是当脚本尝试打开字典时,由于EOFError而导致脚本每月大约一次.字典的大小通常约为80 MB.我甚至尝试在SellerDict.close()之前添加SellerDict.flush()来挑选数据以确保晚上被刷新.
有什么想法可能导致这种情况?Python非常可靠,所以我不认为这是由于文件的大小.在死亡之前代码运行良好很长时间,这让我相信可能在字典中保存了导致此问题的东西,但我不知道.
此外,如果你知道一个更好的方法来保存除了泡菜之外的词典,我愿意接受选择.就像我之前说的那样,词典不断被打开和关闭.只是为了澄清,只有一个程序将使用相同的字典,因此问题不是由试图访问同一字典的几个程序引起的.
更新:
这是我从日志文件中获得的回溯.
Traceback (most recent call last):
File "/home/hostadl/CompileRecentPosts.py", line 782, in <module>
main()
File "/home/hostadl/CompileRecentPosts.py", line 585, in main
SellerDictionarykm=pickle.load(SellerDict)
EOFError
Run Code Online (Sandbox Code Playgroud)