【问题标题】:Invalid filename or mode 'wb'无效的文件名或模式“wb”
【发布时间】:2013-07-04 10:29:08
【问题描述】:

我正在使用 django。我试图使用 Pythons Image library 将用户上传的图标压缩到更小的尺寸。

以下是我的代码:

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'

谁能解释一下为什么会这样?

【问题讨论】:

  • IOError 消息中真的有换行符吗?请不要重新格式化这些行。
  • 不,我是从命令提示符复制的,所以也许这就是原因。
  • 对,Windows cmd 确实不适合复制和粘贴。
  • 无论如何,人们都会看到这个问题。

标签: python django python-imaging-library


【解决方案1】:

为我解决的问题是从反斜杠切换到正斜杠!谁会想到?!

类似帖子:ioerror invalid mode w

【讨论】:

    【解决方案2】:

    检查您的文件路径是否有效:

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

    也许它包含太多karnadash

    【讨论】:

    • 这不会改变任何事情。我从 python IDLE 中尝试了类似的东西,它工作得很好。并且 Django 不允许在绝对路径中使用反斜杠。
    • 没关系。实际上,如果我发布完整的编辑,错误是非常不一致的,我发现了一些新东西。
    【解决方案3】:

    当我试图将一些数字保存在饲料中时,我遇到了类似的问题。我可以保存一些数字,但无法保存其他数字,而且我使用的是相同的代码。我意识到图形的名称和反斜杠与保留代码冲突。

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

    我认为"\n" 被解释为“进入”。改成斜杠后问题就解决了。

    【讨论】:

    • 问题的文件名中没有/n
    猜你喜欢
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多