Я'пытаюсь выполнить файл с командами python из интерпретатора.
EDIT: Я'пытаюсь использовать переменные и настройки из этого файла, а не вызывать отдельный процесс.
Для Python 2:.
>>> execfile('filename.py')
Для Python 3:
>>> exec(open("filename.py").read())
# or
>>> from pathlib import Path
>>> exec(Path("filename.py").read_text())
См. документацию. Если вы используете Python 3.0, смотрите этот вопрос.
Смотрите ответ @S.Lott для примера того, как получить доступ к глобальным файлам из файла filename.py после его выполнения.
Несколько способов.
Из раковины
python someFile.py
Находясь в IDLE, нажмите F5.
Если вы набираете текст в интерактивном режиме, попробуйте следующее: (только для Python 2!).
>>> variables= {}
>>> execfile( "someFile.py", variables )
>>> print variables # globals from the someFile module
Для Python3 используйте:
>>> exec(open("filename.py").read())
exec(open("./path/to/script.py").read(), globals())
Это позволит выполнить скрипт и поставить все это'глобальные переменные в переводчик'масштабы глобальной (обычное поведение в большинстве ситуаций, сценариев).
[Документация на Python 3 Метод exec
] (https://docs.python.org/3/library/functions.html#exec)
Удивлена, что я не'т видел еще. Вы можете запустить файл, а затем оставить переводчика открытым после выполнения расторгает с помощью опции-I`:
| foo.py |
----------
testvar = 10
def bar(bing):
return bing*3
--------
$ python -i foo.py
>>> testvar
10
>>> bar(6)
18
Я'пытаюсь использовать переменные и настройки из этого файла, а не вызывать отдельный процесс.
Ну, простой импорт файла с помощью import filename
(минус .py, должен быть в том же каталоге или в вашем PYTHONPATH
) запустит файл, делая его переменные, функции, классы и т.д. доступными в пространстве имен filename.variable
.
Так, если у вас есть cheddar.py
с переменной spam и функцией eggs - вы можете импортировать их с помощью import cheddar
, получить доступ к переменной с помощью cheddar.spam
и запустить функцию, вызвав cheddar.eggs()
.
Если у вас есть код в cheddar.py
, который находится вне функции, он будет запущен немедленно, но создание приложений, которые запускают материал при импорте, затруднит повторное использование вашего кода. Если это возможно, размещайте все внутри функций или классов.
Я не специалист, но вот что я заметил:
если ваш код mycode.py например, А вы типа просто 'импорт mycode в', Python будет выполнять его, но он не будет делать все ваши переменные, доступные переводчику. Я обнаружил, что вы должны на самом деле типа 'от mycode в импорт *' Если вы хотите, чтобы все переменные, доступные переводчику.
С моей точки зрения, самый лучший путь:
import yourfile
и после изменения yourfile.py
reload(yourfile)
или
import imp;
imp.reload(yourfile) in python3
но это будет сделать функцию и классов выглядит так: с yourfile.функция1, с yourfile.класс1.....
Если вы не согласны с тем, окончательно решение:
reload(yourfile)
from yourfile import *
Для питон3 использовать либо с ХХХХ = имяв
с yourfile`.
exec(open('./xxxx.py').read())
Для Python 3:
>>> exec(open("helloworld.py").read())
Убедитесь, что вы'вновь в правильной директории перед выполнением команды.
Чтобы запустить файл из другой директории, вы можете использовать следующую команду:
with open ("C:\\Users\\UserName\\SomeFolder\\helloworld.py", "r") as file:
exec(file.read())
Вобще,
from my_file import *
Убедитесь, что не добавить .расширение пы. Если ваш .пы файл в Использовать поддиректорию,
from my_dir.my_file import *