我正在尝试加载pkl文件,
pkl_file = open(sys.argv[1], 'rb')
world = pickle.load(pkl_file)
但是我从这些行中得到一个错误
Traceback (most recent call last):
File "E:/python/test.py", line 186, in <module>
world = pickle.load(pkl_file)
ModuleNotFoundError: No module named 'numpy.core.multiarray\r'
我正在使用Windows 10,python 3.7,并安装了四个软件包(numpy 1.17.2,opencv-python 4.1.1.26,pip 19.2.3,setuptools 41.2.0)。我试图将“ rb”更改为“ r”,但仍然出现错误,我该如何解决?
答案 0 :(得分:0)
我认为这里有两个问题。
首先,您的泡菜是或包含NumPy对象,该对象不属于标准库。因此,您必须确保NumPy已安装到当前的Python环境中,并且在导入之前尝试加载腌制的对象。根据您的设置,安装可能很简单,
pip install numpy
然后您必须添加行,
import numpy as np
在脚本顶部。
第二,似乎Python遇到了this issue,在那里您的二进制文件被错误地保存为Windows上的文本,导致每个'\n'
都被转换为'\r\n'
。要解决此问题,您必须将'\r\n'
重新转换回'\n'
。只要文件不是巨大,通常不会很痛苦。
这是一个相对完整的示例:
import sys
import numpy as np
src = sys.argv[1] # path to your file
data = open(src).read().replace('\r\n', '\n') # read and replace file contents
dst = src + ".tmp"
open(dst, "w").write(data) # save a temporary file
world = pickle.load(open(dst, "rb"), encoding='latin1')
答案 1 :(得分:0)
好的,我只需要自己解决这个问题,然后我就解决了。您所要做的就是将所有“\r\n”更改为“\n”。您可以通过多种方式执行此操作。您可以进入 Notepad++ 并将行尾从 CR LF 更改为 LF。或者你可以通过编程来做
open(newfile, 'w', newline = '\n').write(open(oldfile, 'r').read())