Pythonのお勉強 Part21

このエントリーをはてなブックマークに追加
489デフォルトの名無しさん
file = u'ほげ.txt'
fullpath = u'%s/%s' % (os.path.abspath(os.path.dirname(sys.argv[0])), file)

みたいな書き方をしたとき、
実行ファイルの場所のパス名がすべて半角英数なら問題なさそうなのですが、
日本語が含まれていると、

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

が出てきてしまいます。
490デフォルトの名無しさん:2007/11/14(水) 05:34:10
Python 2.5.1 です。
491デフォルトの名無しさん:2007/11/14(水) 05:44:23

path = os.path.abspath(os.path.dirname(sys.argv[0]))
print isinstance(path, str)
print isinstance(path, unicode)

if isinstance(path, str): path = unicode(path, 'mbcs')
file = u'デスマ.txt'
fullpath = u'%s/%s' % (path, file)
print fullpath

とりあえずこれでどちらでも正常に動くことが確認出来ました。