Search code examples
python-3.xpygletfilenotfounderror

Python FileNotFoundError even if the File is there


My project directory tree is something like this,

build
----fonts
--------Roboto Bold.ttf
----main.py

The following code errors out,

from pyglet import font
font.add_file("fonts\\Roboto Bold.ttf")

Also tried this code,

import os
from pyglet import font
font.add_file(str(os.getcwd())+"\\fonts\\Roboto Bold.ttf")

the error is,

Traceback (most recent call last):
  File "{full_dir_name}\build\main.py", line 25, in <module>
    font.add_file(str(os.getcwd())+'\\fonts\\Roboto Bold.ttf')
  File "C:\python-3.8.5-amd64\lib\site-packages\pyglet\font\__init__.py", line 183, in add_file
    font = open(font, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '{full_dir_name}\\fonts\\Roboto Bold.ttf'

I have tried about a day now and also seen other posts here but could not resolve...


Solution

  • The resource (image, font, sound, etc.) file path has to be relative to the current working directory. The working directory is possibly different to the directory of the python file.

    The name and path of the file can be get by __file__. The current working directory can be get by os.getcwd(). If the file is in an subfolder of the python file (or even in the same folder), then you can get the directory of the file and join (os.path.join()) the relative filepath. e.g.:

    font.add_file(str(os.getcwd())+"\\fonts\\Roboto Bold.ttf")

    font.add_file(os.path.join(os.path.dirname(os.path.abspath(__file__)), "fonts/Roboto Bold.ttf"))