Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:对象似乎不是类似文件的对象_Python_Image_Matplotlib_Plot - Fatal编程技术网

Python TypeError:对象似乎不是类似文件的对象

Python TypeError:对象似乎不是类似文件的对象,python,image,matplotlib,plot,Python,Image,Matplotlib,Plot,我正在尝试访问一个png文件以添加到matplotlib绘图的背景中。我在做这样的事情: fn = get_sample_data('Jupiterbackground.png', asfileobj=False) img = read_png(fn) 但我收到了这样一个错误: TypeError:对象似乎不是类似文件的对象。 所以我手动输入了这个png文件的路径文件名,看看它是否能工作,但仍然不能工作,所以我假设我选择的文件类型有问题。还是我使用了有缺陷的方法?我也试过了。我也犯了同样的错误

我正在尝试访问一个png文件以添加到matplotlib绘图的背景中。我在做这样的事情:

fn = get_sample_data('Jupiterbackground.png', asfileobj=False)
img = read_png(fn)
但我收到了这样一个错误: TypeError:对象似乎不是类似文件的对象。
所以我手动输入了这个png文件的路径文件名,看看它是否能工作,但仍然不能工作,所以我假设我选择的文件类型有问题。还是我使用了有缺陷的方法?

我也试过了。我也犯了同样的错误。但同样的事情也可以用:

import matplotlib.image as mpimg\
img = mpimg.imread('Jupiterbackground.png')

这就给了图像数组一个numpy数组。然后,如果您愿意,您甚至可以使用
img.astype(#datatype)
更改数据类型。我也试过了。我也犯了同样的错误。但同样的事情也可以用:

import matplotlib.image as mpimg\
img = mpimg.imread('Jupiterbackground.png')

这就给了图像数组一个numpy数组。然后,如果您愿意,您甚至可以使用
img.astype(#datatype)
更改数据类型。下次请包括您的导入,我想是这样的

from matplotlib._png import read_png
from matplotlib.cbook import get_sample_data
fn = get_sample_data('Jupiterbackground.png', asfileobj=False)
img = read_png(fn)
fn
是一个字符串,因为您使用了
asfileobj=False
(您可以使用
print(fn,type(fn))
来检查这一点,这通常是查找
TypeErrors
)的好方法,
read\u png
需要一个文件对象。您可以使用
asfileobj=True
或对从
get\u sample\u data
获取的字符串调用open

但我无法让
read\u png
工作并获得“OSError:read over the end of file”。但该方法没有文档记录(据我所知),其模块名以下划线开头,这在python约定中意味着它不是公共API的一部分(即:它是matplotlib内部使用的函数)


正如另一个答案所说,使用不同的函数来完成您的任务。

下次请包括您的导入,我想是的

from matplotlib._png import read_png
from matplotlib.cbook import get_sample_data
fn = get_sample_data('Jupiterbackground.png', asfileobj=False)
img = read_png(fn)
fn
是一个字符串,因为您使用了
asfileobj=False
(您可以使用
print(fn,type(fn))
来检查这一点,这通常是查找
TypeErrors
)的好方法,
read\u png
需要一个文件对象。您可以使用
asfileobj=True
或对从
get\u sample\u data
获取的字符串调用open

但我无法让
read\u png
工作并获得“OSError:read over the end of file”。但该方法没有文档记录(据我所知),其模块名以下划线开头,这在python约定中意味着它不是公共API的一部分(即:它是matplotlib内部使用的函数)

正如另一个答案所说,使用不同的功能来完成任务