запустить программу в оболочке Python - PullRequest
41 голосов
/ 14 сентября 2011

У меня есть демонстрационный файл: test.py.В консоли Windows я могу запустить файл с: C:\>test.py

Как вместо этого запустить файл в оболочке Python?

Ответы [ 6 ]

86 голосов
/ 14 сентября 2011

Используйте execfile для Python 2 :

>>> execfile('C:\\test.py')

Используйте exec для Python 3

>>> exec(open("C:\\test.py").read())
36 голосов
/ 14 сентября 2011

Если вы хотите запустить сценарий и завершить его в приглашении (чтобы вы могли проверить переменные и т. Д.), Используйте:

python -i test.py

, который запустит сценарий, а затем переведет васPython интерпретатор.

14 голосов
/ 14 сентября 2011

Зависит от того, что в test.py.Ниже приведена соответствующая структура:

# suppose this is your 'test.py' file
def main():
 """This function runs the core of your program"""
 print("running main")

if __name__ == "__main__":
 # if you call this script from the command line (the shell) it will
 # run the 'main' function
 main()

Если вы сохраните эту структуру, вы можете запустить ее в командной строке следующим образом (предположим, что $ - это приглашение командной строки):

$ python test.py
$ # it will print "running main"

Если вы хотите запустить его из оболочки Python, просто выполните следующее:

>>> import test
>>> test.main() # this calls the main part of your program

Нет необходимости использовать модуль subprocess, если вы уже используете Python.Вместо этого попытайтесь структурировать ваши файлы Python таким образом, чтобы их можно было запускать как из командной строки, так и из интерпретатора Python.

6 голосов
/ 03 июня 2017

Для более новой версии python:

exec(open(filename).read())
2 голосов
/ 06 августа 2018

Если вы хотите избежать написания всего этого каждый раз, вы можете определить функцию:

run = lambda filename : exec(open(filename).read())

и затем назовите его

run('filename.py')
2 голосов
/ 14 сентября 2011

Из этой же папки вы можете сделать:

import test
...