操作系统实用程序 – 实用程序(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)-1
onsuccess,或设置为编码错误时无效字符的索引.使用
Py_DecodeLocale()
函数将字节串解码回宽字符串.更改版本3.7:该函数现在使用UTF-8模式的UTF-8编码.
另见
PyUnicode_EncodeFSDefault()
和PyUnicode_EncodeLocale()
功能.3.5版本中的新版本
改进版本3.7:该功能现在支持UTF-8模式.
系统功能
这些是实用程序函数,它们将功能从sys
moduleaccessible转换为C代码。他们都使用当前的解释器线程sys
module的dict,包含在内部线程状态结构中.
- PyObject *
PySys_GetObject
( const char *name) - Return value: Borrowed reference.
返回对象name来自
sys
模块或NULL如果它不存在,没有设置异常.
- int
PySys_SetObject
( const char *name,PyObject *v) - 在name模块中设置
sys
v除非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()
,它将尝试生成一个core
file.
- 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.
评论被关闭。