This问题,但它存在缺陷,因为它返回<type 'str'>
(使用__file__
时和使用模块inspect
时)而不是<type 'unicode'>
{1}}我需要的路径包含非ascii字符(希伯来字符,具体而言)。
如何在文件系统编码中获取<type 'unicode'>
中当前运行脚本的路径和文件名?是否有内置的Unicode友好功能用于执行此操作或任何解决方案?
仅使用__file__.encode(sys.getfilesystemencoding())
调用ascii codec can't decode byte ...
失败。
答案 0 :(得分:2)
您需要.decode()
,而不是.encode()
。要从unicode
转到str
,一个会对进行编码。要转向另一个方向,一个解码。
尝试:
import sys
filename = __file__.decode(sys.getfilesystemencoding())
print type(filename), filename
结果:
$ python 'קוֹבֶץ.py'
<type 'unicode'> קוֹבֶץ.py
答案 1 :(得分:1)
我想您要使用decode
代替encode
:
>>> type('string'.encode('utf-8'))
<type 'str'>
>>> type('string'.decode('utf-8'))
<type 'unicode'>
一般来说,encode
返回一个字节串,decode
是一个unicode对象。