很高级层 ¶
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 设为0and 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 ofPyRun_SimpleFile(). filename is decoded from the filesystem encoding (sys.getfilesystemencoding())。若 filename isNULL, this function uses"???"as the filename. If closeit is true, the file is closed beforePyRun_SimpleFileExFlags()返回。
-
int
PyRun_SimpleString
(
const
char
*
命令
)
¶
-
这是简化接口对于
PyRun_SimpleStringFlags()below, leaving thePyCompilerFlags* argument set toNULL.
-
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. Returns0当成功时或-1if 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
SystemExitis raised, this function will not return-1, but exit the process, as long asPyConfig.inspect为 0。
-
int
PyRun_SimpleFile
(
FILE
*
fp
,
const
char
*
filename
)
¶
-
这是简化接口对于
PyRun_SimpleFileExFlags()below, leaving closeit 设为0and 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 beforePyRun_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.ps1andsys.ps2. filename is decoded from the 文件系统编码和错误处理程序 .返回
0when the input was executed successfully,-1if there was an exception, or an error code from theerrcode.hinclude file distributed as part of Python if there was a parse error. (Note thaterrcode.his not included byPython.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.ps1andsys.ps2. filename is decoded from the 文件系统编码和错误处理程序 。返回0at 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 theModules/_tkinter.cin the Python source code.3.12 版改变: This function is only called from the main interpreter .