使用 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 版本发生变更: 现在将使用 文件系统错误处理句柄。 |