0

免責事項 同様のスレッドを開始しましたが、大きすぎて複雑になったと思います

要するにこれが問題

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

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 に答える