OSError Traceback(最近一次调用 最后)in()
21 draw = PIL.ImageDraw.Draw(img) 22 print(os.path.join(path,filename)) ---> 23 draw.font = PIL.ImageFont.truetype((os.path.join(path,filename))+' .ttf',44) 24 t2 = get_display(t1) 25 w,h = draw.textsize(t2)
()
OSError:无法打开资源
我有以下错误PIL
或者我犯了一些错误。它只显示第一个文件路径,然后出现此错误。
unicode_text = u"\u0627"
list_of_letters = list (unicode_text)
folder = 1
n=1
i=0
for i in range(0,158):
path = r"E:\Dummy\fonts"
dirs = os.listdir( path )
for files in dirs:
char = u''.join(list_of_letters)
t1 = arabic_reshaper.reshape(char)
W,H= (100, 100)
img= PIL.Image.new('RGBA', (W, H), (255, 255, 255),)
draw = PIL.ImageDraw.Draw(img)
print(os.path.join(path, filename))
draw.font = PIL.ImageFont.truetype((os.path.join(path, filename)), 44)
t2 = get_display(t1)
w, h = draw.textsize(t2)
draw.text(((W-w)/2,(H-h)/2),t2, fill="#000000")
path = 'E:\Dummy\sam\\'+ str(folder)
if not os.path.exists(path):
os.makedirs(path)
img.save(path + '\\' + char+'.png', "PNG")
folder+=1
#i+=1
答案 0 :(得分:1)
从您的回答中,程序失败的地方并不是很清楚。它抱怨无法打开文件。这条线看起来很可疑:
path = 'E:\Dummy\sam\\'+ str(folder)
我建议你永远不要手动连接带反斜杠的路径,但要始终使用Python标准库为你做这件事。例如,你不需要关心逃避某些角色。
dir_path = os.path.join('E:', 'Dummy', 'sam', str(folder))
file_name = '{}.png'.format(char)
file_path = os.path.join(dir_path, file_name)
如果您不在循环内向文件夹添加1,则可以对代码进行另一项改进,但使用内置函数enumerate
:
for folder_index, file in enumerate(dirs, start=1):
# Do your thing here
# The variable folder_index is incremented automatically.