0

Disclaimer I have a similar thread started but I think it got too big and convoluted

In short this is the problem

import imghdr
import os.path
....
image_type = imghdr.what(os.path.normpath(filename))

fails with

IOError: [Errno 22] invalid mode ('rb') or filename: 'D:\\mysvn\\trunk\\Assets\\models\\character\\char1.jpg\r'

Where the aforementioned file does exist

Help? :D

4

2 回答 2

2
invalid mode ('rb') or filename: 'D:\\...\\char1.jpg\r'
                                                    ^^

您在文件路径中有一个尾随回车符。先剥离它:

filename = filename.strip()
于 2013-05-08T16:42:58.177 回答
2

\r文件名末尾有一个回车符。这不是 Windows 文件名的有效字符,所以我怀疑文件名是否有效。

用于.rstrip('\r')删除它:

image_type = imghdr.what(os.path.normpath(filename.rstrip('\r')))

.rstrip()从字符串的末尾删除字符,并且只删除您命名的集合中的字符。

由于这是一个文件名,因此文件名周围的任何.strip()空格都可能不正确,因此直接向上也可以:

image_type = imghdr.what(os.path.normpath(filename.strip()))

这将从字符串的开头和结尾删除制表符、换行符、回车符和空格。

于 2013-05-08T16:43:35.273 回答