2010-01-07 3 views

ответ

11

В Python 2 встроенная функция execfile делает это.

execfile(filename) 
+2

вам нужно любить питон. Как вы * exec * ute a * file * в python: execfile. –

+0

в Python 3 это антиплазмин работу вы должны использовать свой собственный модуль для того, как этого импорта SYS класса процесса(): \t четкости __call __ (сам, имя файл, Глобал = None, местные жители = None): \t \t импорт SYS \t \t, если не будет глобалы None: \t \t \t глобалы = sys._getframe (1) .f_globals \t \t, если местные жители не None: \t \t \t местные жители = sys._getframe (1) .f_locals \t \t с открытым (имя файла, "г"), как FH: \t \t \t Exec (fh.read() + "\ п", Globals, местные жители) sys.modules [__ name__] = процесс() – jamk

+2

Да, 'execfile()' исчез в Python 3. См. [Что является альтернативой execfile в Python 3.0?] (http://stackoverflow.com/questions/436198/what-is-an-alternative-to-execfile-in -python-3-0) –

3

Если вы работаете ipython (который я очень рекомендую для интерактивных сессий питона), вы можете ввести:

%run filename 

или

%run filename.py 

выполнить модуль (вместо импортируя его). Вы получите завершение имени файла, что отлично подходит для ReallyLongModuleName.py (а не того, что вы назвали бы вашими модулями так или иначе).

+0

спасибо за предложение, я обычно использую ipython, но к несчастью для этой задачи мне нужно было отлаживать библиотеку C, которая была вызвана из python через Ctypes. Поэтому мне нужно было загрузить двоичный файл python в gdb, запустить его, импортировать ctypes, загрузить библиотеку, записать адрес загрузки, разбить на gdb, добавить символы библиотеки, установить точки останова, продолжить выполнение python и, наконец, загрузить модуль. используя ipython, добавил бы дополнительный шаг, так как он не сам двоичный, который может быть загружен непосредственно в gdb, а другой скрипт python :-) – fortran

Смежные вопросы