У меня есть демонстрационный файл: test.py
. В консоли Windows я могу запустить файл с помощью: C:\>test.py
Как я могу вместо этого выполнить файл в оболочке Python?
У меня есть демонстрационный файл: test.py
. В консоли Windows я могу запустить файл с помощью: C:\>test.py
Как я могу вместо этого выполнить файл в оболочке Python?
Используйте execfile для Python 2:
>>> execfile('C:\\test.py')
Используйте exec для Python 3.
>>> exec(open("C:\\test.py").read())
SyntaxError: (Unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \uXXXX excape
. Что это значит? Я попытался изменить кодировку моего документа .py на Unicode, но это не дало никакого эффекта.
- person Musixauce3000; 07.04.2016
\U
экранировании Unicode. Очевидно, вы избежите его непонимания, продублировав все обратные косые черты, за которыми следует U. Но это приводит к появлению недопустимого аргумента OSError 22 'c:\\users\username\\desktop\\test.py'
, что довольно странно, потому что я только продублировал обратную косую черту в \Users
. Почему ошибка показывает, что я продублировал все обратные косые черты, кроме той, за которой следует имя пользователя?
- person Musixauce3000; 07.04.2016
execfile = lambda file: exec(open(file).read())
?
- person alancalvitti; 03.01.2020
Если вы хотите запустить скрипт и закончить его приглашением (чтобы вы могли проверять переменные и т. Д.), Используйте:
python -i test.py
Это запустит сценарий, а затем перейдет в интерпретатор Python.
Это зависит от того, что находится в 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.
Для более новой версии Python:
exec(open(filename).read())
Если вы не хотите писать все это каждый раз, вы можете определить функцию:
def run(filename):
exec(open(filename).read())
а затем назовите это
run('filename.py')
Из этой же папки вы можете:
import test
python
из командной строки? Или вы используете IDLE или другую программу, которая также может предоставлять подсказку Python>>>
? - person S.Lott   schedule 14.09.2011