我对python很新,所以请耐心等待。 我正在尝试编写一个利用面部识别的代码,并且我需要能够访问子文件夹。
目前我遇到了查找“图片”文件夹的问题。执行代码时,我在face-recognition
文件夹中,需要访问一级以下的images
。
- root
--- face-recognition
-- images
def getImagePath():
currentPath = os.path.dirname(__file__) # Absolute dir the script is in
filepath = "../images/" # The path where the pictures are uploaded
fileList = os.listdir(os.path.join(currentPath, filepath))
return fileList;
执行此代码会出现错误`FileNotFoundError:[Errror 2]没有这样的文件或目录:'../ images /'
编辑: 在尝试重写代码后,我看到了实际问题:
def getImages():
currentPath = os.path.dirname(os.path.abspath(__file__)); # Absolute dir the script is in
filepath = "../images/"; # The path where the pictures are uploaded
directory = os.listdir(os.path.join(currentPath, filepath));
images = [ fi for fi in directory if fi.endswith(('.JPG', '.jpg', 'jpeg', '.JPEG')) ];
return images;
通过我的mac上的终端运行此代码片段,没有任何错误。但是在raspberry-pi 3上运行相同的代码时,会抛出错误,并且它不会产生任何感觉。
解决方案: 在检查图像文件夹时,我发现我有一个忽略所有文件的.gitkeep和.gitignore,(甚至.gitkeep),这就是它抛出错误的原因,因为它在覆盆子pi上克隆了repo时删除了文件夹。
答案 0 :(得分:1)
两部分:
1)你的方向错了。 ../images/
上升到一个目录。你只想要images/
。对于绝对引用,您需要/face-recognition/images
2)glob
是你的朋友https://docs.python.org/3/library/glob.html
import glob
file_list = glob.glob('/face-recognition/images/*.png')
或您需要的任何扩展程序。
答案 1 :(得分:1)
C:\root
├───my
│ └───path
│ └───tmp.py
├───image
Pathlib模块很方便(Python版本3.4+)。对于上面的目录结构...
在tmp.py中:
from pathlib import Path
p = Path(__file__).parent
图片目录位于tmp.py
父母的父母之下。
>>> print(p)
C:\root\my\path
>>> print(p.parent.parent)
C:\root
>>> image_path = p.parent.parent / 'image'
>>> for img in image_path.iterdir():
... print(img)
C:\root\image\empty.gif
C:\root\image\o.gif
C:\root\image\x.gif
>>>
>>> [str(img) for img in image_path.iterdir()]
['C:\\root\\image\\empty.gif', 'C:\\root\\image\\o.gif', 'C:\\root\\image\\x.gif']
>>>