Python 获取当前正在运行的脚本的unicode路径

Python 获取当前正在运行的脚本的unicode路径,python,unicode,Python,Unicode,此网站上存在问题,但它有缺陷,因为它返回一个(无论是在使用\uuuu文件时还是在使用模块inspect时)而不是我需要的,因为我的路径包含非ascii字符(具体来说是希伯来文字符) 如何在文件系统编码中获取中当前运行脚本的路径和文件名?是否有任何内置的Unicode友好函数或解决方案 仅调用\uuu file\uuu.encode(sys.getfilesystemencoding())失败,ascii编解码器无法解码字节…您需要.decode(),而不是.encode()。要从unicode到

此网站上存在问题,但它有缺陷,因为它返回一个
(无论是在使用
\uuuu文件时还是在使用模块
inspect
时)而不是我需要的
,因为我的路径包含非ascii字符(具体来说是希伯来文字符)

如何在文件系统编码中获取
中当前运行脚本的路径和文件名?是否有任何内置的Unicode友好函数或解决方案

仅调用
\uuu file\uuu.encode(sys.getfilesystemencoding())
失败,ascii编解码器无法解码字节…
您需要
.decode()
,而不是
.encode()
。要从
unicode
str
,需要进行编码。若要转到另一个方向,则需要解码

尝试:

结果:

$ python 'קוֹבֶץ.py'
<type 'unicode'> קוֹבֶץ.py
$python'קוֹבֶץ.py'
קוֹבֶץ.py
您需要的是
.decode()
,而不是
.encode()
。要从
unicode
str
,需要进行编码。若要转到另一个方向,则需要解码

尝试:

结果:

$ python 'קוֹבֶץ.py'
<type 'unicode'> קוֹבֶץ.py
$python'קוֹבֶץ.py'
קוֹבֶץ.py

我想您应该使用
解码
而不是
编码

>>> type('string'.encode('utf-8'))
<type 'str'>
>>> type('string'.decode('utf-8'))
<type 'unicode'>
>类型('string'.encode('utf-8'))
>>>类型('string')。解码('utf-8'))

一般来说,
encode
返回一个bytestring,
decode
一个unicode对象。

我想你应该使用
decode
而不是
encode

>>> type('string'.encode('utf-8'))
<type 'str'>
>>> type('string'.decode('utf-8'))
<type 'unicode'>
>类型('string'.encode('utf-8'))
>>>类型('string')。解码('utf-8'))

一般来说,
encode
返回一个bytestring,
decode
一个unicode对象。

现在一切都有意义了!多谢各位much@Jonathan:注意:问题中的错误是由于
.encode()
方法在使用适用于可表示字符的
sys.getdefaultencoding()
对bytestring进行编码之前,尝试使用
sys.getfilesystemencoding()
对其进行解码(在Linux上,您的本地设置应该是正确的)。现在一切都有意义了!非常感谢much@Jonathan:注意:问题中的错误是由于
.encode()
方法在使用
sys.getdefaultencoding()
(在Python 2上应为ascii)编码之前,尝试使用
sys.getfilesystemencoding()对ByTestString进行解码
适用于可表示字符(在Linux上,您的本地设置应该正确)。