免责声明我有一个类似的线程开始,但我认为它太大而且错综复杂
简而言之,这就是问题
import imghdr
import os.path
....
image_type = imghdr.what(os.path.normpath(filename))
失败
IOError: [Errno 22] invalid mode ('rb') or filename: 'D:\\mysvn\\trunk\\Assets\\models\\character\\char1.jpg\r'
上述文件存在的地方
帮助? :d
答案 0 :(得分:2)
invalid mode ('rb') or filename: 'D:\\...\\char1.jpg\r'
^^
文件路径中有一个尾随回车符。剥离它:
filename = filename.strip()
答案 1 :(得分: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()))
这将从字符串的起始和结尾删除制表符,换行符,回车符和空格。