Копирование и вставка кода в интерпретатор Python
Существует фрагмент кода, который я хотел бы скопировать и вставить в свой интерпретатор Python. К сожалению, из-за чувствительности Python к пробелу не так просто скопировать и вставить его таким образом, который имеет смысл. (Я думаю, что пробелы становятся искалеченными) Есть ли лучший способ? Возможно, я могу загрузить фрагмент из файла.
Это всего лишь небольшой пример, но если есть много кода, я бы хотел не вводить все из определения функции или копировать и вставлять строки за строкой.
11 ответов
Вы можете вызвать execfile (имя файла). Более или менее то же, что и импорт модуля, за исключением того, что он пропускает часть администрирования модуля и не требует, чтобы вы добавляли папку в sys.path.
EDIT: для ответа на исходный вопрос: копируемый код может быть выполнен путем вызова exec (codestring).
Обычно вы можете легко и безопасно выполнить вставку копий с помощью IPython, используя команды %cpaste (вручную заканчивайте код с помощью — ) и %paste (выполняйте код немедленно). Это очень удобно для тестирования кода, который вы копируете, например, с веб-страниц или из вашего редактора: эти команды даже отбрасывают для вас начальные подсказки (например, In[1] и . ).
IPython также имеет команду %run которая запускает программу и оставляет вас в оболочке Python со всеми переменными, которые были определены в программе, чтобы вы могли поиграть с ними.
Чтобы получить помощь по следующим функциям: %cpaste? , так далее.
Вы можете просто преобразовать все вкладки в пробелы и удалить пустые строки ВСЕ. Таким образом, вы сможете вставить любой код в консоль python (например: python2.6)
Вы можете просто импортировать файл в интерпретатор python. Это загрузит класс и позволит вам запустить код.
Например, создайте файл с именем «bgcolors.py» и скопируйте и вставьте свой код внутри. Затем, используя интерпретатор python, вы просто набираете «import bgcolors», и вы должны иметь возможность запускать его.
Вы можете прочитать здесь:
Вы можете использовать IPython, что намного лучше, чем python repl. Он имеет команду для ввода из внешнего редактора с помощью команды% edit.
Dreampie позволяет копировать и вставлять код с правильным отступом.
Интерфейс IDLE делает все возможное, чтобы сохранить правильный отступ вставного текста.
Мой ответ в основном посвящен копированию в стандартную оболочку python (проверяется только на linux).
В зависимости от того, откуда приходит код и как он изначально отформатирован , пробелы могут иметь значение или не иметь значения. В частности, ваш примерный фрагмент — скопированный из раздела SO-форматирования SO — это не имеет значения (предполагается, что код правильно отступом для исполняемого файла).
Пустая строка, однако, вызывает проблемы в стандартном интерпретаторе python, так как обычно это de-indent cmd оболочки. В вашем фрагменте фрагмента пустая строка, предшествующая определению функции disable() , заканчивается/выходит из определения класса преждевременно, поэтому, когда строка определения disable() появляется с ошибкой отступа, обнаружено:
Поэтому вам просто нужно обратить внимание на эти пустые строки. Для работы над этой пустой строкой вам нужен всего 2 многострочных инструмента для копирования-вставки.
Единственное, что мне было нужно — для копирования только разделов уже вдавленного кода (например, функций из внутренних классов) — один дополнительный уровень отступов, чтобы не требовать повторного ввода отступа скопированного кода. Для этого ведущая строка if 1: перед вставкой фрагмента и Enter (т.е. Пустая строка) после трюка:
Существует встроенный вызов метода «область отступа и область выделения», и вы можете просто использовать его. После того, как вы вставляете много кода сразу, вы можете выбрать их все и отредактировать пробелы.
Copying and pasting code into the Python interpreter
There is a snippet of code that I would like to copy and paste into my Python interpreter. Unfortunately due to Python’s sensitivity to whitespace it is not straightforward to copy and paste it a way that makes sense. (I think the whitespace gets mangled) Is there a better way? Maybe I can load the snippet from a file.
This is just an small example but if there is a lot of code I would like to avoid typing everything from the definition of the function or copy and pasting line by line.
11 Answers 11
You can usually easily and safely do copy-pasting with IPython, through the commands %cpaste (manually end code with — ) and %paste (execute code immediately). This is very handy for testing code that you copy from web pages, for instance, or from your editor: these commands even strip leading prompts (like In[1] and . ) for you.
IPython also has a %run command that runs a program and leaves you in a Python shell with all the variables that were defined in the program, so that you can play with them.
In order to get help on these functions: %cpaste? , etc.
You can simply convert all tabs to spaces and remove ALL empty lines. So you will be able to paste any code to python console (e.g.: python2.6)
You can call execfile(filename). More or less the same as importing a module, except that it skips the module administration part and doesn’t require you to add a folder to sys.path.
EDIT: To address the original question: copy-pasted code can be executed by calling exec(codestring).
![]()
My answer is specifically about copy-pasting into the standard python shell (only tested on linux).
Depending on where the code comes from and how it is originally formatted the whitespace may or may not matter. In particular about your example snippet — copy-pasted from SO’s code-formatted section — it doesn’t matter (assuming the code is properly indented to be executable).
The empty line, however, does cause trouble in the standard python interpreter because it normally is the shell-s de-indent cmd. In your snippet’s case the empty line preceeding the disable() function definition ends/exits the class definition prematurely, so when the disable() definition line comes in an indentation error is detected:
So you just need to pay attention at those empty lines. Your snippet needs just 2 multi-line copy-paste ops to work around that empty line.
Копирование и вставка кода в интерпретатор Python
Есть фрагмент кода, который я хотел бы скопировать и вставить в свой интерпретатор Python. К сожалению, из-за чувствительности Python к пробелам непросто скопировать и вставить его так, как это имеет смысл. (Я думаю, что пробелы искажаются) Есть ли способ лучше? Может быть, я смогу загрузить фрагмент из файла.
Это всего лишь небольшой пример, но если кода много, я бы не хотел вводить все из определения функции или копировать и вставлять построчно.
задан 23 марта ’10, 12:03
Используйте приличный редактор (я имею в виду Emacs), и вам не нужно будет копировать / вставлять. — tripleee
Как с помощью Emacs можно скопировать вставку с python.org на терминал? — Petri Sirkkala
micropython имеет специальный режим вставки, доступный по нажатию ctrl-E — Willem Hengeveld
11 ответы
Вы можете вызвать execfile (имя файла). Более или менее то же самое, что и импорт модуля, за исключением того, что он пропускает часть администрирования модуля и не требует добавления папки в sys.path.
РЕДАКТИРОВАТЬ: чтобы ответить на исходный вопрос: скопированный код можно выполнить, вызвав exec (codestring).
ответ дан 25 мар ’10, в 08:03

как это отвечает на вопрос «как вставить код Python?» — Брайан Окли
Вы правы, что на самом деле это не так, но я предпочитаю это решение, потому что оно не требует от вас выбора конкретной оболочки или использования конкретной IDE. Другие решения также превосходны, но я принял наиболее общее. — wp123
@Bryan Oakley: Вы правы, для этого нельзя использовать execfile (filename). Однако exec (codestring) может. — Питер Витвоет
Чтобы этот ответ оставался актуальным, обратите внимание, что execfile был удален из Python 3. См. stackoverflow.com/q/436198/353278 — Джефф
Обычно вы можете легко и безопасно выполнить копирование с помощью IPython, через команды %cpaste (завершите код вручную с помощью — ) и расширение %paste (выполнить код немедленно). Это очень удобно для тестирования кода, который вы копируете, например, с веб-страниц или из своего редактора: эти команды даже удаляют начальные подсказки (например, In[1] и . ) для тебя.
IPython также имеет %run команда, которая запускает программу и оставляет вас в оболочке Python со всеми переменными, которые были определены в программе, так что вы можете играть с ними.
Чтобы получить помощь по этим функциям: %cpaste? , и т.д.
ответ дан 17 дек ’18, 10:12
JetBrains PyCharm также поддерживает это! — Эндрю
In Ipython 5 просто вставьте код. Прочтите мой ответ здесь — Левон
Вы можете просто преобразовать все вкладки в пробелы и удалить BCE пустые строки. Таким образом, вы сможете вставить любой код в консоль Python (например, python2.6)
Спасибо! Простой правильный ответ на странице, полной «ответов», которые на самом деле не отвечают на вопрос. — Грегори Арениус
Вы можете просто импортировать файл в интерпретатор Python. Это загрузит класс и позволит вам запустить код.
Например, создайте файл с именем «bgcolors.py», скопируйте и вставьте внутрь свой код. Затем, используя интерпретатор Python, вы просто набираете «import bgcolors», и вы сможете его запустить.
Вы можете прочитать больше здесь:
ответ дан 23 мар ’10, в 15:03
Второй import bgcolors в том же сеансе ничего не будет делать, потому что import «знает», что bgcolors уже импортирован. — MSW
Вместо того, чтобы явно импортировать его в оболочку, вызовите python следующим образом: python -m bgcolors.py и вам будет представлена среда, в которой этот модуль уже загружен. — везулт
Я думаю, что опция -m работает только для файла в sys.path. Но моего скрипта нет в стандартной библиотеке. — wp123
@wpeters: Работает так же, как и любой импорт. Если ваш модуль не находится в текущем каталоге, в любой оболочке, совместимой с Bourne, вы можете вызвать python следующим образом: PYTHONPATH=/path/to/module/dir python -m bgcolors.py или любым другим способом установите переменную среды PYTHONPATH. — везулт
Вы можете использовать IPython что намного лучше python repl. В нем есть команда для получения входных данных от внешний редактор с помощью команды% edit.
ответ дан 23 мар ’10, в 15:03
Мне нравится это решение, потому что оно не требует использования другой IDE. — wp123
Мой ответ конкретно касается копирования в стандартную оболочку Python (проверено только на Linux).
В зависимости от того, откуда взялся код и как он изначально отформатирован пробел может иметь значение, а может и не иметь значения. В частности, о вашем примере фрагмента — скопировано из раздела SO с форматированием кода — это не имеет значения (при условии, что код имеет правильный отступ, чтобы быть исполняемым).
Пустая строка, однако, вызывает проблемы в стандартном интерпретаторе Python, потому что обычно cmd удаления отступа оболочки. В случае вашего фрагмента пустая строка перед disable() определение функции преждевременно завершается / выходит из определения класса, поэтому, когда disable() в строке определения появляется ошибка отступа:
Так что вам просто нужно обратить внимание на эти пустые строки. Вашему фрагменту требуется всего 2 многострочных операции копирования и вставки, чтобы обойти эту пустую строку.
Единственное, что мне было нужно — для копирования и вставки только частей уже имеющего отступы кода (скажем, функций из внутренних классов) — один дополнительный уровень отступа, чтобы не нужно было повторно делать отступ скопированного кода. Для этого ведущий if 1: строку перед вставкой фрагмента и Enter (т.е. пустая строка) после выполнения трюка:

Альтернативой использованию двух операций копирования и вставки является просто убедиться, что «пустая» строка имеет такой же отступ, как и остальная часть вашего кода. И чтобы избежать использования if 1: есть несколько альтернатив: если в вашем редакторе есть выделение визуального блока (а не выделение строк), используйте его. Или выберите строки, которые вы хотите скопировать, и снимите с них отступ перед копированием. — Джефф
Запуск Python и python-скрипт на компьютере
Код, написанный на языке Python, может храниться в редакторе кода, IDE или файле. И он не будет работать, если не знать, как его правильно запускать.
В этом материале рассмотрим 7 способов запуска кода, написанного на Python. Они будут работать вне зависимости от операционной системы, среды Python или местоположения кода.
Где запускать Python-скрипты и как?
Python-код можно запустить одним из следующих способов:
- С помощью командной строки операционной системы (shell или терминал);
- С помощью конкретной версии Python или Anaconda;
- Использовать Crontab;
- Запустить код с помощью другого Python-скрипта;
- С помощью файлового менеджера;
- Использовать интерактивный режим Python;
- Использовать IDE или редактор кода.
Запуск Python-кода интерактивно
Для запуска интерактивной сессии нужно просто открыть терминал или командную строку и ввести python (или python3 в зависимости от версии). После нажатия Enter запустится интерактивный режим.
Вот как запустить интерактивный режим в разных ОС.
Интерактивный режим в Linux
Откройте терминал. Он должен выглядеть приблизительно вот так :

После нажатия Enter будет запущен интерактивный режим Python.
Интерактивный режим в macOS
На устройствах с macOS все работает похожим образом. Изображение ниже демонстрирует интерактивный режим в этой ОС.

Интерактивный режим в Windows
В Windows нужно открыть командную строку и ввести python . После нажатия Enter появится приблизительно следующее:

Запуск Python-скриптов в интерактивном режиме
В таком режиме можно писать код и исполнять его, чтобы получить желаемый результат или отчет об ошибке. Возьмем в качестве примера следующий цикл.

Этот код должен выводить целые числа от 0 до 5. В данном случае вывод — все, что появилось после print(i) .
Для выхода из интерактивного режима нужно написать следующее:
И нажать Enter. Вы вернетесь в терминал, из которого и начинали.
Есть и другие способы остановки работы с интерактивным режимом Python. В Linux нужно нажать Ctrl + D, а в Windows — Ctrl + Z + Enter.
Стоит отметить, что при использовании этого режима Python-скрипты не сохраняются в локальный файл.
Как выполняются Python-скрипты?
Отличный способ представить, что происходит при выполнении Python-скрипта, — использовать диаграмму ниже. Этот блок представляет собой скрипт (или функцию) Python, а каждый внутренний блок — строка кода.
При запуске скрипта интерпретатор Python проходит сверху вниз, выполняя каждую из них. Именно таким образом происходит выполнение кода.
Но и это еще не все.
Блок-схема выполнения кода интерпретатором
- Шаг 1: скрипт или .py-файл компилируется, и из него генерируются бинарные данные. Готовый файл имеет расширение .pyc или .pyo.
- Шаг 2: генерируется бинарный файл. Он читается интерпретатором для выполнения инструкций.
Это набор инструкций, которые приводят к финальному результату.
Иногда полезно изучать байткод. Если вы планируете стать опытным Python-программистом, то важно уметь понимать его для написания качественного кода.
Это также пригодится для принятия решений в процессе. Можно обратить внимание на отдельные факторы и понять, почему определенные функции/структуры данных работают быстрее остальных.
Как запускать Python-скрипты?
Для запуска Python-скрипта с помощью командной строки сначала нужно сохранить код в локальный файл.
Возьмем в качестве примера файл, который был сохранен как python_script.py. Сохранить его можно вот так:
- Создать Python-скрипт из командной строки и сохранить его,
- Создать Python-скрипт с помощью текстового редактора или IDE и сохранить его. Просто создайте файл, добавьте код и сохраните как «python_script.py»
Сохранить скрипт в текстовом редакторе достаточно легко. Процесс ничем не отличается от сохранения простого текстового файла.
Но если использовать командную строку, то здесь нужны дополнительные шаги. Во-первых, в самом терминале нужно перейти в директорию, где должен быть сохранен файл. Оказавшись в нужной папке, следует выполнить следующую команду (на linux):
После нажатия Enter откроется интерфейс командной строки, который выглядит приблизительно следующим образом:

Теперь можно писать код и с легкостью сохранять его прямо в командной строке.