mirror of https://github.com/python/cpython
Added execfile().
This commit is contained in:
parent
465c499544
commit
0f61f8a4bd
|
@ -186,6 +186,42 @@ builtin_exec(self, v)
|
||||||
return exec_eval(v, file_input);
|
return exec_eval(v, file_input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static object *
|
||||||
|
builtin_execfile(self, v)
|
||||||
|
object *self;
|
||||||
|
object *v;
|
||||||
|
{
|
||||||
|
object *str = NULL, *globals = NULL, *locals = NULL, *w;
|
||||||
|
FILE* fp;
|
||||||
|
int n;
|
||||||
|
if (v != NULL) {
|
||||||
|
if (is_stringobject(v))
|
||||||
|
str = v;
|
||||||
|
else if (is_tupleobject(v) &&
|
||||||
|
((n = gettuplesize(v)) == 2 || n == 3)) {
|
||||||
|
str = gettupleitem(v, 0);
|
||||||
|
globals = gettupleitem(v, 1);
|
||||||
|
if (n == 3)
|
||||||
|
locals = gettupleitem(v, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (str == NULL || !is_stringobject(str) ||
|
||||||
|
globals != NULL && !is_dictobject(globals) ||
|
||||||
|
locals != NULL && !is_dictobject(locals)) {
|
||||||
|
err_setstr(TypeError,
|
||||||
|
"execfile arguments must be filename[,dict[,dict]]");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
fp = fopen(getstringvalue(str), "r");
|
||||||
|
if (fp == NULL) {
|
||||||
|
err_setstr(IOError, "execfile cannot open the file argument");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
w = run_file(fp, getstringvalue(str), file_input, globals, locals);
|
||||||
|
fclose(fp);
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
|
||||||
static object *
|
static object *
|
||||||
builtin_float(self, v)
|
builtin_float(self, v)
|
||||||
object *self;
|
object *self;
|
||||||
|
@ -603,6 +639,7 @@ static struct methodlist builtin_methods[] = {
|
||||||
{"divmod", builtin_divmod},
|
{"divmod", builtin_divmod},
|
||||||
{"eval", builtin_eval},
|
{"eval", builtin_eval},
|
||||||
{"exec", builtin_exec},
|
{"exec", builtin_exec},
|
||||||
|
{"execfile", builtin_execfile},
|
||||||
{"float", builtin_float},
|
{"float", builtin_float},
|
||||||
{"getattr", builtin_getattr},
|
{"getattr", builtin_getattr},
|
||||||
{"hex", builtin_hex},
|
{"hex", builtin_hex},
|
||||||
|
|
Loading…
Reference in New Issue