Проблема Python PIL | ошибка операционной системы: не удается открыть ресурс

#python #pandas #python-imaging-library

Вопрос:

Я запускаю скрипт на python для создания сертификатов. Однако я получаю эту ошибку:

 Initializing Script! Traceback (most recent call last):  File "Generate_certificates.py", line 31, in lt;modulegt;  main()   File "Generate_certificates.py", line 12, in main  font = ImageFont.truetype(r".Dancing_ScriptDancingScript-VariableFont_wght.ttf", 150)  File "/home/rohit07/.local/lib/python3.8/site-packages/PIL/ImageFont.py", line 855, in truetype  return freetype(font)  File "/home/rohit07/.local/lib/python3.8/site-packages/PIL/ImageFont.py", line 852, in freetype  return FreeTypeFont(font, size, index, encoding, layout_engine)  File "/home/rohit07/.local/lib/python3.8/site-packages/PIL/ImageFont.py", line 211, in __init__  self.font = core.getfont( OSError: cannot open resource   

Структура файла внутри папки такова:

введите описание изображения здесь

Сценарий:

 from PIL import Image, ImageFont, ImageDraw import pandas as pd  def main():  print("Initializing Script!")  names = pd.read_csv('dummy_names.csv')  for i,row in names.iterrows():  name = str(row['FName'])   ' '   str(row['LName'])  name = name.title()  empty_img = Image.open("empty-cert.png")  font_size = 150  font = ImageFont.truetype(r".Dancing_ScriptDancingScript-VariableFont_wght.ttf", 150)  W,H = empty_img.size   w, h = font.getsize(name)  width = ((W-w)/2)  height = ((H-h)/2)-50  if W%w gt;= 2:  font_size = 130  width = ((W-w)/2)  75  height = ((H-h)/2)-10   font = ImageFont.truetype(r".Dancing_ScriptDancingScript-VariableFont_wght.ttf", font_size)  image_editable = ImageDraw.Draw(empty_img)  image_editable.multiline_text((width,height), name, (35, 57, 75), font=font)  empty_img.save("{}.jpg".format(name.replace(" ", "_")))  if i % 50 == 0:   print('Processed {} Rows'.format(i))  print("Process Complete!")  if __name__ == "__main__":  main()   

Я хочу использовать пользовательский шрифт для имени, поэтому я использую шрифт сценария танца. Я проверил, нет ли где-нибудь опечаток, но все равно не могу устранить неполадки.

Комментарии:

1. попробуйте использовать абсолютный путь или / вместо

2. @alex Это сработало!

Ответ №1:

С помощью комментария @alex

Я изменился:

 font = ImageFont.truetype(r".Dancing_ScriptDancingScript-VariableFont_wght.ttf", 150)  font = ImageFont.truetype(r".Dancing_ScriptDancingScript-VariableFont_wght.ttf", font_size)  

Для:

 font = ImageFont.truetype(r"./Dancing_Script/DancingScript-VariableFont_wght.ttf", 150) font = ImageFont.truetype(r"./Dancing_Script/DancingScript-VariableFont_wght.ttf", font_size)  

и это сработало!