操作系统实用程序 – 实用程序(Python教程)(参考资料)
操作系统实用程序
- PyObject *
PyOS_FSPath( PyObject *path) - Return value: New reference.
返回path的文件系统表示。如果对象是
str或bytes对象,然后它的引用计数增加。如果对象实现了os.PathLike接口,那么只要它是__fspath__()或str对象就会返回bytes。否则TypeError被抬起NULL返回了新版本3.6.
- int
Py_FdIsInteractive(文件 *fp,常见问题 *filename) - 如果标准I / O文件fp名称为filenameisdeemed interactive。这是
isatty(fileno(fp))为真的文件的情况。如果全局标志Py_InteractiveFlag为true,如果filename指针是NULL或者如果名称等于其中一个字符串"<stdin>"或"???".
- void
PyOS_AfterFork_Parent() - 在进程fork之后更新某些内部状态的函数。这应该在调用
fork()或者任何克隆当前进程的类似函数,无论进程克隆是否成功。只能在fork()定义的系统上使用.版本3.7.
- void
PyOS_AfterFork_Child() - 在进程fork之后更新内部解释器状态的函数。这必须在调用
fork(),或任何克隆当前进程的类似函数,如果进程有可能回调到Python解释器。只能在定义fork()的系统上使用.版本3.7.
中的新增内容允许
os.register_at_fork()允许注册自定义Python函数PyOS_BeforeFork(),PyOS_AfterFork_Parent()和PyOS_AfterFork_Child().
- void
PyOS_AfterFork() - 在进程fork之后更新某些内部状态的函数;如果继续使用Python解释器,这应该在新进程中出现。如果新的可执行文件被加载到新进程中,则不需要调用此函数.
从版本3.7开始不推荐使用:此函数被
PyOS_AfterFork_Child().
- int
PyOS_CheckStack() - 当解释器用完堆栈空间时返回true。这是一个可靠的检查,但只有在定义
USE_STACKCHECK时才可用(目前Windows使用的是Microsoft Visual C ++编译器)。USE_STACKCHECK将自动定义;你永远不应该改变你自己的代码中的定义.
- PyOSsighandler_t
PyOS_getsig( int i) - 返回当前信号信号处理程序i。这是一个薄的包装,无论是
sigaction()还是signal()。不要直接调用这些功能!PyOS_sighandler_t是void(*)(int).
- 的一个typedef别名PyOS_sighandler_t
PyOS_setsig( int i,PyOS_sighandler_t h) - 设置信号i的信号处理程序为h;返回旧的信号处理程序。这是一个围绕
sigaction()或signal()的薄包装。不要直接调用这些功能!PyOS_sighandler_t是void (*)(int).
- wchar_t *
Py_DecodeLocale的一个typedefalias( const char * arg,size_t *size) - 使用 surrogateescapeerror处理程序解码来自语言环境编码的字节字符串:将不可解码字节解码为范围U + DC80..U + DCFF中的字符。如果字节序列可以解码为asurrogate字符,使用surrogateescape错误处理程序转义字节而不是解码它们.
编码,最高优先级到最低优先级:
UTF-8在macOS和Android上;UTF-8如果启用了Python UTF-8模式;ASCII如果LC_CTYPE语言环境是"C",nl_langinfo(CODESET)返回ASCII编码(或别名),和mbstowcs()和wcstombs()函数使用ISO-8859-1编码- 当前语言环境编码
返回指向新分配的指针宽字符串,使用
PyMem_RawFree()释放内存。如果尺寸不是NULL,将除空字符之外的宽字符数写入*size返回
NULL解码错误或内存分配错误。如果sizeis//NULL,*size设置为(size_t)-1内存错误或设置为(size_t)-2解码错误.解码错误永远不会发生,除非有错误Clibrary.
使用
Py_EncodeLocale()函数将字符串字符串编码为字节串.参见
PyUnicode_DecodeFSDefaultAndSize()和PyUnicode_DecodeLocaleAndSize()函数新版本3.5.
改版3.7:该函数现在使用UTF-8模式的UTF-8编码.
- char*
Py_EncodeLocale( const wchar_t *text,size_t *error_pos) - 使用surrogateescape错误处理程序:范围内的代理字符U + DC80..U + DCFF转换为字节0x80..0xFF .
编码,最高优先级到最低优先级:
UTF-8在macOS和Android上;UTF-8如果启用了Python UTF-8模式;ASCII如果LC_CTYPE语言环境是"C",nl_langinfo(CODESET),则返回ASCII编码(或别名),mbstowcs()和wcstombs()函数使用ISO-8859-1编码- 当前的locale encoding.
该函数在Python UTF-8模式下使用UTF-8编码.
返回指向新分配的字节串的指针,使用
PyMem_Free()释放记忆。返回NULL关于编码错误或内存分配错误如果error_pos不是
NULL,*error_pos设置为(size_t)-1onsuccess,或设置为编码错误时无效字符的索引.使用
Py_DecodeLocale()函数将字节串解码回宽字符串.更改版本3.7:该函数现在使用UTF-8模式的UTF-8编码.
另见
PyUnicode_EncodeFSDefault()和PyUnicode_EncodeLocale()功能.3.5版本中的新版本
改进版本3.7:该功能现在支持UTF-8模式.
系统功能
这些是实用程序函数,它们将功能从sys moduleaccessible转换为C代码。他们都使用当前的解释器线程sysmodule的dict,包含在内部线程状态结构中.
- PyObject *
PySys_GetObject( const char *name) - Return value: Borrowed reference.
返回对象name来自
sys模块或NULL如果它不存在,没有设置异常.
- int
PySys_SetObject( const char *name,PyObject *v) - 在name模块中设置
sysv除非v是NULL,否则从sys模块中删除name。成功时返回0,错误时返回-1
- void
PySys_ResetWarnOptions() - 重置
sys.warnoptions到一个空列表。在Py_Initialize().
- void
PySys_AddWarnOption( const wchar_t *s) - 附加s到
sys.warnoptions。这个函数必须被称为priortoPy_Initialize()以影响警告过滤器列表.
- void
PySys_AddWarnOptionUnicode( PyObject *unicode) - 附加unicode到
sys.warnoptions.注意:此函数目前不能在CPythonimplementation外部使用,因为它必须在隐式导入
warnings之前调用Py_Initialize()要有效,但不能确定,直到足够的运行时被初始化以允许创建Unicode对象.
- void
PySys_SetPath( const wchar_t *path) - 将
sys.path设置为path中找到的路径的列表对象,该列表对象应该是用平台的搜索路径分隔符分隔的路径列表(:在Unix上,;在Windows上).
- void
PySys_WriteStdout( const char *format, …) - 写输出字符串由format描述为
sys.stdout。即使发生截断,也会引发Noexceptions(见下文).format应将格式化输出字符串的总大小限制为1000字节或更少 – 在1000字节之后,输出字符串将被截断。特别是,这意味着不应出现不受限制的“%s”格式;应使用“%。&lt; N&gt; s”限制这些格式,其中&lt; N&gt;是计算的十进制数,以便&lt; N&gt;加上其他格式化文本的最大大小,注意1000字节。还要注意“%f”,它可以打印数百个非常大的数字.
如果出现问题,或者
sys.stdout未设置,格式化的消息写入真实(C级)stdout.
- void
PySys_WriteStderr( const char *format, …) - As
PySys_WriteStdout(),但写到sys.stderr或stderrinstead.
- void
PySys_FormatStdout( const char *format, …) - 函数类似于PySys_WriteStdout(),但使用
PyUnicode_FromFormatV()格式化消息,不要将消息截断为任意长度.新版本3.2.
- void
PySys_FormatStderr( const char *format, …) - 作为
PySys_FormatStdout(),但写到sys.stderr或stderrinstead.新版本3.2.
- void
PySys_AddXOption( const wchar_t *s) - 把s作为一套
-X选项并将它们添加到PySys_GetXOptions()返回的currentoptions映射中。这个功能可以在Py_Initialize().之前调用。版本3.2.
- PyObject *
PySys_GetXOptions() - Return value: Borrowed reference.
返回
-X选项的当前字典,类似于sys._xoptions。出错时,NULL返回并发生异常.新版本3.2.
进程控制
- 无效
Py_FatalError(const char *message) -
打印致命错误消息并终止该过程。不执行清理。只有在检测到一个会使继续使用Python解释器变得危险的条件时,才应调用此函数。例如,当对象管理似乎被破坏时。在Unix上,调用标准的C库函数
abort(),它将尝试生成一个corefile.
- void
Py_Exit( int status) -
退出当前进程。这调用
Py_FinalizeEx()然后调用标准C库函数exit(status)。如果Py_FinalizeEx()表示错误,则退出状态设置为120.在版本3.6中更改:最终确定的错误不再被忽略.
- int
Py_AtExit( void(*func)()) -
注册要调用的清理函数
Py_FinalizeEx()。将使用无参数调用cleanup函数,并且不应返回任何值。最多可以注册32个清理功能。注册成功后,Py_AtExit()返回0;如果失败,它会返回-1。最后注册的清理功能首先被调用。每次清理功能最多只会被调用一次。由于Python的内部最终化将在清理函数之前完成,因此func.
评论被关闭。