Python 具有相对路径和绝对路径的PIL图像中的FileNotFoundError 将PIL.Image导入为pilimg 将numpy作为np导入 #读取图像 im=pilimg.open(“../dataset/start.jpg”) #显示图像 im.show() #将图像像素数据提取到numpy阵列 pix=np.数组(im)

Python 具有相对路径和绝对路径的PIL图像中的FileNotFoundError 将PIL.Image导入为pilimg 将numpy作为np导入 #读取图像 im=pilimg.open(“../dataset/start.jpg”) #显示图像 im.show() #将图像像素数据提取到numpy阵列 pix=np.数组(im),python,python-imaging-library,file-not-found,Python,Python Imaging Library,File Not Found,(我不是数据集的作者,因此无法上载整个项目文件。) 我正在尝试用枕头读取图像,并将其转换为NumPy数组。然而,我尝试了几种方法,例如使用绝对路径和使用OpenCV的except方法中的方法。但是,它使FileNotFound始终保持不变 start.jpg的绝对路径是F:\GIST강의 자료\2021 1학기\EC3202신호 및 시스템\编程分配\dataset\start.jpg。我相信从src/program.py到start.jpg的相对路径是。/dataset/start.jpg 我

(我不是数据集的作者,因此无法上载整个项目文件。)

我正在尝试用枕头读取图像,并将其转换为NumPy数组。然而,我尝试了几种方法,例如使用绝对路径和使用OpenCV的except方法中的方法。但是,它使FileNotFound始终保持不变

start.jpg
的绝对路径是
F:\GIST강의 자료\2021 1학기\EC3202신호 및 시스템\编程分配\dataset\start.jpg
。我相信从
src/program.py
start.jpg
的相对路径是
。/dataset/start.jpg


我正在使用conda 4.10.1、python 3.8.8和windows 10。

路径是相对于当前工作目录的。 如果您不确定cwd是什么,您可以通过以下操作找到它:

print(f"Current working dir: {os.getcwd()})
然后您可以使用
os.path.join
从那里连接您的相对路径

os.path.join(os.getcwd(),'dataset/start.jpg')

相对路径不依赖于os.getcwd。原因如下所示

相反,请使用
pathlib.Path
。例如,想想这些结构

x:/
├ A.
┃ ├ 1.png
┃ ├ 2.png
┃ ├ 3.png
┃ ├ 4.png
┃ └ 5.png
┃
└ B
└ script.py
如果您想可靠地从
script.py
访问1.png,最好使用
\uuuu file\uuuuu
来确定脚本的路径,因为当前工作目录可能与实际脚本位置不同,如下面的输出示例所示

导入路径库
导入操作系统
打印(“当前cwd:,os.getcwd())
#获取当前脚本的文件夹
script\u location=pathlib.Path(\uu文件\uuuuu).parent
#获取数据文件夹
数据位置=脚本位置.parent.joinpath(“A”)
#单文件示例
png\u file=data\u location.joinpath(“1.png”)
#或者可以通过目录进行迭代
对于数据位置.iterdir()中的文件:
#以linux样式打印完整路径
打印(f“{file_u.absolute().as_posix()}”)
(以绝对路径中的不同路径访问文件)
jupiterbjy@NYARUDESK/D:py X:\B\script.py
当前cwd:D:\
X:/A/1.png
X:/A/2.png
X:/A/3.png
X:/A/4.png
X:/A/5.png
(更改目录)
jupiterbjy@NYARUDESK/D:
❯ cd x:
(现在使用间接路径)
jupiterbjy@NYARUDESK/X:py。\B\script.py
当前cwd:X:\
X:/A/1.png
X:/A/2.png
X:/A/3.png
X:/A/4.png
X:/A/5.png
请参见cwd-当前工作目录-在每次运行时对
os.getcwd
的区别

但是,无论您在何处通过间接或直接、文件夹B外部或内部访问该脚本,都可以使用
\uuuu file\uuuu
.parent
.joinpath
对象的
pathlib.Path
方法相对可靠地访问文件


签出
pathlib
的文档,因为我看到您是韩国人,这是链接到韩国人文档的。

您可以通过执行
print(f“Current working dir:{os.getcwd()
@user\n我应该从bash shell或python提示符运行它吗?在使用图像之前,只需在代码中打印一下,然后像usal@user_na我在注释中添加了代码,它显示了当前的工作目录:
F:\GIST강의 자료\2021 1학기\EC3202신호 및 시스템\编程分配
@user_na是文件导入工作目录的基础,而不是导入图像的源代码文件的位置?