The Very High Level Layer¶
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, and
Py_func_type_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)¶
This is a simplified interface to
PyRun_AnyFileExFlags()below, leaving closeit set to0and flags set toNULL.
-
int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)¶
This is a simplified interface to
PyRun_AnyFileExFlags()below, leaving the closeit argument set to0.
-
int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit)¶
This is a simplified interface to
PyRun_AnyFileExFlags()below, leaving the flags argument set toNULL.
-
int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)¶
If 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()). If filename isNULL, this function uses"???"as the filename. If closeit is true, the file is closed beforePyRun_SimpleFileExFlags()returns.
-
int PyRun_SimpleString(const char *command)¶
This is a simplified interface to
PyRun_SimpleStringFlags()below, leaving thePyCompilerFlags* argument set toNULL.
-
int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)¶
Executes the Python source code from command in the
__main__module according to the flags argument. If__main__does not already exist, it is created. Returns0on success or-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.inspectis zero.
-
int PyRun_SimpleFile(FILE *fp, const char *filename)¶
This is a simplified interface to
PyRun_SimpleFileExFlags()below, leaving closeit set to0and flags set toNULL.
-
int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit)¶
This is a simplified interface to
PyRun_SimpleFileExFlags()below, leaving flags set toNULL.
-
int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)¶
Similar to
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 filesystem encoding and error handler. If closeit is true, the file is closed beforePyRun_SimpleFileExFlags()returns.備註
On 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_InteractiveOneObject(FILE *fp, PyObject *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 must be a Pythonstrobject.Returns
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_InteractiveOne(FILE *fp, const char *filename)¶
This is a simplified interface to
PyRun_InteractiveOneFlags()below, leaving flags set to