LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 226|回复: 0

python文件系统编码格式

[复制链接]
发表于 2024-1-29 00:38:21 | 显示全部楼层 |阅读模式


使用 filesystem encoding and error handler 的编码和解码函数 (PEP 383 和 PEP 529)。

要在参数解析期间将文件名编码为 bytes,应当使用 "O&" 转换器,传入 PyUnicode_FSConverter() 作为转换函数:

int PyUnicode_FSConverter(PyObject *obj, void *result)
属于 稳定 ABI.
ParseTuple 转换器:编码 str 对象 -- 直接获取或是通过 os.PathLike 接口 -- 使用 PyUnicode_EncodeFSDefault() 转为 bytes;bytes 对象将被原样输出。 result 必须为 PyBytesObject* 并将在其不再被使用时释放。

在 3.1 版本加入.

在 3.6 版本发生变更: 接受一个 path-like object。

要在参数解析期间将文件名解码为 str,应当使用 "O&" 转换器,传入 PyUnicode_FSDecoder() 作为转换函数:

int PyUnicode_FSDecoder(PyObject *obj, void *result)
属于 稳定 ABI.
ParseTuple 转换器:解码 bytes 对象 -- 直接获取或是通过 os.PathLike 接口间接获取 -- 使用 PyUnicode_DecodeFSDefaultAndSize() 转为 str;str 对象将被原样输出。 result 必须为 PyUnicodeObject* 并将在其不再被使用时释放。

在 3.2 版本加入.

在 3.6 版本发生变更: 接受一个 path-like object。

PyObject *PyUnicode_DecodeFSDefaultAndSize(const char *str, Py_ssize_t size)
返回值:新的引用。 属于 稳定 ABI.
使用 filesystem encoding and error handler 解码字符串。

如果你需要以当前语言区域编码格式解码字符串,请使用 PyUnicode_DecodeLocaleAndSize()。

参见 The Py_DecodeLocale() 函数。
在 3.6 版本发生变更: 现在将使用 文件系统错误处理句柄。

PyObject *PyUnicode_DecodeFSDefault(const char *str)
返回值:新的引用。 属于 稳定 ABI.
使用 filesystem encoding and error handler 解码以空值结尾的字符串。

如果字符串长度已知,则使用 PyUnicode_DecodeFSDefaultAndSize()。

在 3.6 版本发生变更: 现在将使用 文件系统错误处理句柄。

PyObject *PyUnicode_EncodeFSDefault(PyObject *unicode)
返回值:新的引用。 属于 稳定 ABI.
使用 filesystem encoding and error handler 编码一个 Unicode 对象,并返回 bytes。 请注意结果 bytes 对象可以包含空字节。

如果你需要以当前语言区域编码格式编码字符串,请使用 PyUnicode_EncodeLocale()。

参见 Py_EncodeLocale() 函数。
在 3.2 版本加入.

在 3.6 版本发生变更: 现在将使用 文件系统错误处理句柄。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表