很高级层

The functions in this chapter will let you execute Python source code given in a file or a buffer, but they will not let you interact in a more detailed way with the interpreter.

Several of these functions accept a start symbol from the grammar as a parameter. The available start symbols are Py_eval_input , Py_file_input ,和 Py_single_input . These are described following the functions which accept them as parameters.

Note also that several of these functions take FILE * parameters. One particular issue which needs to be handled carefully is that the FILE structure for different C libraries can be different and incompatible. Under Windows (at least), it is possible for dynamically linked extensions to actually use different libraries, so care should be taken that FILE * parameters are only passed to these functions if it is certain that they were created by the same library that the Python runtime is using.

int PyRun_AnyFile ( FILE * fp , const char * filename )

这是简化接口对于 PyRun_AnyFileExFlags() below, leaving closeit 设为 0 and flags 设为 NULL .

int PyRun_AnyFileFlags ( FILE * fp , const char * filename , PyCompilerFlags * flags )

这是简化接口对于 PyRun_AnyFileExFlags() below, leaving the closeit 自变量设为 0 .

int PyRun_AnyFileEx ( FILE * fp , const char * filename , int closeit )

这是简化接口对于 PyRun_AnyFileExFlags() below, leaving the flags 自变量设为 NULL .

int PyRun_AnyFileExFlags ( FILE * fp , const char * filename , int closeit , PyCompilerFlags * flags )

fp refers to a file associated with an interactive device (console or terminal input or Unix pseudo-terminal), return the value of PyRun_InteractiveLoop() , otherwise return the result of PyRun_SimpleFile() . filename is decoded from the filesystem encoding ( sys.getfilesystemencoding() )。若 filename is NULL , this function uses "???" as the filename. If closeit is true, the file is closed before PyRun_SimpleFileExFlags() 返回。

int PyRun_SimpleString ( const char * 命令 )

这是简化接口对于 PyRun_SimpleStringFlags() below, leaving the PyCompilerFlags * argument set to NULL .

int PyRun_SimpleStringFlags ( const char * 命令 , PyCompilerFlags * flags )

Executes the Python source code from 命令 __main__ module according to the flags 自变量。若 __main__ does not already exist, it is created. Returns 0 当成功时或 -1 if an exception was raised. If there was an error, there is no way to get the exception information. For the meaning of flags , see below.

Note that if an otherwise unhandled SystemExit is raised, this function will not return -1 , but exit the process, as long as PyConfig.inspect 为 0。

int PyRun_SimpleFile ( FILE * fp , const char * filename )

这是简化接口对于 PyRun_SimpleFileExFlags() below, leaving closeit 设为 0 and flags 设为 NULL .

int PyRun_SimpleFileEx ( FILE * fp , const char * filename , int closeit )

这是简化接口对于 PyRun_SimpleFileExFlags() below, leaving flags 设为 NULL .

int PyRun_SimpleFileExFlags ( FILE * fp , const char * filename , int closeit , PyCompilerFlags * flags )

类似于 PyRun_SimpleStringFlags() , but the Python source code is read from fp instead of an in-memory string. filename should be the name of the file, it is decoded from 文件系统编码和错误处理程序 。若 closeit is true, the file is closed before PyRun_SimpleFileExFlags() 返回。

注意

在 Windows, fp should be opened as binary mode (e.g. fopen(filename, "rb") ). Otherwise, Python may not handle script file with LF line ending correctly.

int PyRun_InteractiveOne ( FILE * fp , const char * filename )

这是简化接口对于 PyRun_InteractiveOneFlags() below, leaving flags 设为 NULL .

int PyRun_InteractiveOneFlags ( FILE * fp , const char * filename , PyCompilerFlags * flags )

Read and execute a single statement from a file associated with an interactive device according to the flags argument. The user will be prompted using sys.ps1 and sys.ps2 . filename is decoded from the 文件系统编码和错误处理程序 .

返回 0 when the input was executed successfully, -1 if there was an exception, or an error code from the errcode.h include file distributed as part of Python if there was a parse error. (Note that errcode.h is not included by Python.h , so must be included specifically if needed.)

int PyRun_InteractiveLoop ( FILE * fp , const char * filename )

这是简化接口对于 PyRun_InteractiveLoopFlags() below, leaving flags 设为 NULL .

int PyRun_InteractiveLoopFlags ( FILE * fp , const char * filename , PyCompilerFlags * flags )

Read and execute statements from a file associated with an interactive device until EOF is reached. The user will be prompted using sys.ps1 and sys.ps2 . filename is decoded from the 文件系统编码和错误处理程序 。返回 0 at EOF or a negative number upon failure.

int ( * PyOS_InputHook ) ( void )
属于 稳定 ABI (应用程序二进制接口) .

Can be set to point to a function with the prototype int func(void) . The function will be called when Python’s interpreter prompt is about to become idle and wait for user input from the terminal. The return value is ignored. Overriding this hook can be used to integrate the interpreter’s prompt with other event loops, as done in the Modules/_tkinter.c in the Python source code.

3.12 版改变: This function is only called from the main interpreter .