无法打开资源:操作系统错误

时间:2018-03-14 16:07:38

标签: python python-3.x for-loop python-imaging-library os.walk

  

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

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.