2013-07-04 31 views
2

我正在使用django。我试图使用Pythons图像库将用户上传的图标压缩为更小的尺寸。无效的文件名或模式'wb'

以下是我的代码:

def resizeImage(icon,ext): 
    path= os.path.join(settings.SITE_ROOT,'karnadash/static/tempfiles/temp'+ext) 
    destination = open(path,'wb+') 
    for chunk in icon.chunks(): 
     destination.write(chunk) 
    destination.close() 
    image = Image.open(path) 
    image= image.resize((50, 50), Image.ANTIALIAS) 
    image.save(path) 
    return image 

问题是我得到一个内部服务器错误。堆栈跟踪的最后一部分如下:

line 31, in resizeImage 
    image.save(path) 
File "C:\Python27\lib\site-packages\PIL\Image.py", line 1446, in save 
    fp = builtins.open(fp, "wb+") 
IOError: [Errno 22] invalid mode ('wb') or filename: 'C:/Users/Silent/Documents/Python/karnadash/karnadash/static/tempfiles/temp.jpg' 

任何人都可以请解释为什么会发生这种情况吗?

+0

IOError消息中是否真的有换行符?请不要重新格式化这些行。 –

+0

不,我从命令提示符复制它,所以也许这就是为什么。 – Sohaib

+0

对,Windows cmd确实可以复制和粘贴。 –

回答

0

检查文件路径,如果它是有效的:

C:/Users/Silent/Documents/Python/karnadash/karnadash/static/tempfiles/temp.jpg 

也许它包含一个karnadash太多。

+0

这不会改变任何东西。 我试过类似的东西从蟒蛇IDLE,它工作正常。 而且Django不允许绝对路径中的反斜杠。 – Sohaib

+0

检查我编辑的答案 – matino

+0

没有问题。其实这个错误是非常不一致的,我应该发布一个完整的编辑我发现了一些新的东西。 – Sohaib

2

什么解决了它对我来说是从反斜杠切换到正斜线!谁会想到?!

类似的帖子:ioerror invalid mode w

-1

我有,当我试图挽救一些数字在fowder类似的问题。有些数字可以保存,但无法保存其他数据,而且我使用的是相同的代码。我意识到图的名称和反斜杠与保留的代码相冲突。

IOError: [Errno 22] invalid mode ('wb') or filename: '02102016\nDTG.png' 

我认为"\n"被解释为“enter”。当我将其改为正斜杠时问题已解决。

+1

问题的文件名中没有'/ n' –

相关问题