如何通过python更改文件系统编码?

2024-05-18 23:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

>>> import sys
>>> sys.getfilesystemencoding()
'UTF-8'

我该怎么改变?我知道如何更改默认的系统编码。

>>> reload(sys)
<module 'sys' (built-in)>
>>> sys.setdefaultencoding('ascii')

但是没有sys.setfilesystemcoding。


Tags: inimport编码系统sysasciireloadutf
2条回答

在许多情况下,文件系统编码是操作系统的固有属性。它不能更改-如果出于某种原因,您需要创建名称编码不同于文件系统编码的文件,请不要对文件名使用Unicode字符串。(或者,如果您使用的是Python3,请使用bytes对象而不是字符串。)

See the documentation for details.特别要注意的是,在Windows系统上,文件系统是本机Unicode的,因此实际上没有进行转换,因此,不可能使用替代的文件系统编码。

有两种方法可以改变它:

1)(仅限linux)export LC_CTYPE=en_US.UTF8 在启动python之前:

$ LC_CTYPE=C python -c 'import sys; print(sys.getfilesystemencoding())'
ANSI_X3.4-1968
$ LC_CTYPE=C.UTF-8 python -c 'import sys; print(sys.getfilesystemencoding())'
UTF-8

请注意,如果未设置LC_CTYPE,LANG将作为其默认值,而LC_ALL将同时覆盖LC_CTYPE和LANG)

2)monkeypatching:

import sys
sys.getfilesystemencoding = lambda: 'UTF-8'

这两种方法都允许像os.stat这样的函数接受unicode(python2.x)字符串。 否则,当这些函数在文件名中看到非ascii符号时会引发异常。

相关问题 更多 >

    热门问题