Это выполнит сценарий и поместит все его глобальные переменные в глобальную область интерпретатора (нормальное поведение в большинстве сред сценариев).
Ты мой герой! Я боролся с некоторыми действительно странными вещами в течение нескольких дней, когда os.getcwd () сказал одно, но glob ("*") работал в другом каталоге ... Спасибо! Спасибо!
Pallevillesen
Есть ли способ передать параметр в сценарий? следующее не работает: exec (откройте «setup.py install»). read (), globals ())
бен
1
@ben, который не будет работать, потому что openнепосредственно читает код из скрипта. Чтобы передать аргументы, посмотрите на этот ответ , но вместо этого execfile, очевидно, используйте execи openкак показано выше.
Нико
47
Удивлен, я еще не видел это. Вы можете выполнить файл и затем оставить интерпретатор открытым после завершения выполнения, используя -iопцию:
Я пытаюсь использовать переменные и настройки из этого файла, чтобы не вызывать отдельный процесс.
Что ж, простой импорт файла с import filename(минус .py, должен находиться в том же каталоге или на вашем PYTHONPATH) запустит файл, сделав его переменные, функции, классы и т. Д. Доступными в filename.variableпространстве имен.
Так что, если у вас есть cheddar.pyпеременная spam и функция eggs, вы можете импортировать их с помощью import cheddar, получить доступ к переменной с помощью cheddar.spamи запустить функцию, вызвавcheddar.eggs()
Если у вас есть код, cheddar.pyкоторый находится за пределами функции, он будет запущен немедленно, но сборка приложений, запускающих что-либо при импорте, усложнит повторное использование вашего кода. Если все возможно, поместите все внутри функций или классов.
если ваш код, например, mycode.py, и вы набираете просто «import mycode», Python выполнит его, но не сделает все ваши переменные доступными для интерпретатора. Я обнаружил, что на самом деле вы должны печатать «из mycode import *», если хотите сделать все переменные доступными для интерпретатора.
Ответы:
Несколько путей.
Из скорлупы
Изнутри IDLE, нажмите F5 .
Если вы печатаете в интерактивном режиме, попробуйте это: ( только Python 2 !)
Для Python3 используйте:
источник
python
не работает, если вы используете Python 3,python3
используется вместо этого.stdin
из файла, как использование<
для выполнения сценария с вexecfile()
.? @ s-python
указывает наpython3
.python
исполняемый файл система находит при просмотре папок в переменной средыPATH
.Для Python 2:
Для Python 3:
Смотрите документацию . Если вы используете Python 3.0, посмотрите этот вопрос .
См. Ответ @ S.Lott для примера того, как вы получаете доступ к глобальным файлам из filename.py после его выполнения.
источник
Python 2 + Python 3
Это выполнит сценарий и поместит все его глобальные переменные в глобальную область интерпретатора (нормальное поведение в большинстве сред сценариев).
exec
Документация Python 3источник
open
непосредственно читает код из скрипта. Чтобы передать аргументы, посмотрите на этот ответ , но вместо этогоexecfile
, очевидно, используйтеexec
иopen
как показано выше.Удивлен, я еще не видел это. Вы можете выполнить файл и затем оставить интерпретатор открытым после завершения выполнения, используя
-i
опцию:источник
Что ж, простой импорт файла с
import filename
(минус .py, должен находиться в том же каталоге или на вашемPYTHONPATH
) запустит файл, сделав его переменные, функции, классы и т. Д. Доступными вfilename.variable
пространстве имен.Так что, если у вас есть
cheddar.py
переменная spam и функция eggs, вы можете импортировать их с помощьюimport cheddar
, получить доступ к переменной с помощьюcheddar.spam
и запустить функцию, вызвавcheddar.eggs()
Если у вас есть код,
cheddar.py
который находится за пределами функции, он будет запущен немедленно, но сборка приложений, запускающих что-либо при импорте, усложнит повторное использование вашего кода. Если все возможно, поместите все внутри функций или классов.источник
from filename import *
На мой взгляд, лучший способ это:
и после изменения yourfile.py
или
но это сделает функцию и классы похожими на это: yourfile.function1, yourfile.class1 .....
Если вы не можете принять их, окончательное решение:
источник
Я не эксперт, но вот что я заметил:
если ваш код, например, mycode.py, и вы набираете просто «import mycode», Python выполнит его, но не сделает все ваши переменные доступными для интерпретатора. Я обнаружил, что на самом деле вы должны печатать «из mycode import *», если хотите сделать все переменные доступными для интерпретатора.
источник
Просто сделать,
Не добавляйте расширение .py. Если ваш .py файл в подкаталоге используется,
источник
Для python3 используйте либо с
xxxx = name
ofyourfile
.источник
Для Python 3:
Убедитесь, что вы находитесь в правильном каталоге, прежде чем запускать команду.
Чтобы запустить файл из другого каталога, вы можете использовать следующую команду:
источник
Предположим, вы хотите следующие функции:
__name__ == '__main__'
Истинно, поэтому скрипты ведут себя как скрипты.Функция
exec(open('foo.py').read())
неудач 1import foo
Стратегия неудач 2Чтобы получить оба, вам нужно это:
источник