Как отменить действие в питоне

Как повторить последнюю команду в оболочке интерпретатора python?

Как мне повторить последнюю команду? Обычные клавиши: Up, Ctrl+Up, Alt-p не работают. Они производят бессмысленные символы.

25 ответов:

Я использую следующее, чтобы включить историю в оболочке python.

Это мой .pythonstartup. Переменная среды PYTHONSTARTUP имеет значение этого пути к файлу.

вам нужно будет иметь модули readline, rlcompleter, чтобы включить это.

затем нажмите на Получить новые ключи для выбора, и вы готовы выбрать любую комбинацию клавиш, которую вы хотите.

Alt + p для предыдущей команды из histroy, Alt + n для следующей команды из истории.

вы не уточнили, какой именно интерпретатор. Предполагая, что вы используете простоя.

из простой документации: История команд:

сочетание клавиш Ctrl+P является нормальной альтернативой стрелку вверх. Убедитесь, что в вашей сборке Python включена gnu readline.

по умолчанию используется сочетание клавиш Alt+P для предыдущей команды, вы можете изменить стрелку, направленную вверх, а не в холостую Гуй >> параметры >> настройки простоя >>ключ >>пользовательские привязки клавиш Нет необходимости запускать пользовательский скрипт, кроме того, модуль readlines не работает в Windows. Надеюсь, Что Поможет. 🙂

ALT + p работает для меня на Enthought Python в Windows.

на Ubuntu Server 12.04, у меня была эта проблема после установки версии Python из источника (Python3.4).

некоторые из комментариев здесь рекомендуют устанавливать Ipython, и я хочу упомянуть, что у меня такое же поведение даже с Ipython. Из того, что я могу сказать, это проблема readline.

для Ubuntu 12.04 server, я должен был установить libncurses-dev и libreadline-dev а затем установите Python из источника для включения поведения up-history (readline). Я в значительной степени сделал это:

после этого я удалил ранее установленный Python (не системный PYTHON, тот, который я установил из источника!) и переустановил его из источника, и все работало так, как ожидалось.

в моей mac os python3 вы можете использовать: управление+P ранняя команда contrlo+N следующая команда

посмотреть под history-previous для команды, вы можете изменить его на что-то лучше как раз здесь.

Я не понимаю, почему так много длинных объяснений по этому поводу. Все, что вам нужно сделать, это установить pyreadline С:

sudo port install py-readline (на Mac)

(предполагая, что вы уже установили Пип.)

Это на холостом ходу 2.7 на OSX Mavericks.

на CentOS, я исправляю это с помощью

а затем перекомпилировать python 3.4.

на OpenSUSE, я исправляю это с помощью

ссылаясь на этот ответ:https://stackoverflow.com/a/26356378/2817654. Возможно,» pip3 install readline » является общим решением. Не пробовал на моем CentOS.

Я нахожу информацию, которую я скопировал ниже ответьте на вопрос

адаптируйтесь к холостому ходу: вместо того, чтобы нажимать стрелку вверх, чтобы вернуть предыдущую команду, если вы просто поместите курсор на предыдущую команду, которую вы хотите повторить, а затем нажмите «enter», эта команда будет повторена в текущей командной строке. Нажмите enter еще раз, и команда будет выполнена.

сила холостого хода, чтобы приспособиться к вам: если вы настаиваете на том, чтобы клавиши со стрелками в Простое окно командной строки работает так же, как и в любой другой командной строке, вы можете сделать это. Перейдите в меню «Параметры», выберите» Настройка простоя», а затем»ключи». Изменение ключа, связанного с действиями» предыдущая команда «и» следующая команда», на стрелку вверх и стрелку вниз соответственно.

Ipython не всегда так. Мне это очень нравится, но если вы попробуете запустить Django shell с ipython. Что-то вроде>>>

он не работает правильно, если вы используете virtualenv. Django нуждается в некоторых специальных включениях, которых нет, если вы запускаете ipython, потому что он запускает систему python по умолчанию, но не виртуальную.

Это может произойти при запуске python script.py против python чтобы войти в интерактивную оболочку, среди других причин отключения readline.

Стрелка вверх работает только в командной строке Python.

для anaconda для python 3.5 мне нужно было установить ncurses

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

если вы используете Debian Jessie запустите это, чтобы исправить установку системы 2.7.9

чтобы исправить мой другой 3.5.2 установка, которую я установил с pyenv:

стрелка вверх работает и для меня. И я не думаю, что вам нужно установить модуль Readline для python builtin commandline. Вы должны попробовать Ipython, чтобы проверить. Или, может быть, это проблема вашей карты клавиатуры.

при использовании MacOSX нажмите control p в цикле и control n цикл вниз. Я использую IDLE Python 3.4.1 Shell.

Это control + p в Mac os в python 3.4 IDEL

Источник

Руководство по модулю клавиатуры Python

Введение

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

Одним из них является модуль под названием keyboard, который полностью контролирует вашу клавиатуру. С помощью данного модуля вы можете печатать что угодно, создавать горячие клавиши, сокращения, блокировать клавиатуру, ждать ввода и т. д.

В этом руководстве мы рассмотрим, как настроить и использовать модуль клавиатуры в Python.

Примечание: Приложения, работающие с автоматизацией человекоподобных процессов, должны разрабатываться этично и ответственно. Модуль клавиатуры сделан так, чтобы быть очень заметным, и, таким образом, делает его одновременно обескураживающим и прозрачным, если кто-то использует его для создания клавиатурных шпионов или вредоносных ботов.

Установка модуля клавиатуры

Версия Python, используемая в этом руководстве, равна 3.8. Однако модуль клавиатуры может работать как с Python 2.x, так и с Python 3.x.

Если вы используете Linnux, чтобы использовать эту библиотеку, вы должны установить ее от root. Если вы этого не сделаете, вы получите:

Кроме того, при запуске сценария вы должны запускать его с правами суперпользователя:

Примечание: Для MacOS вам, возможно, придется разрешить терминалу или другим приложениям изменять состояние вашей машины, например, путем ввода текста. Также имейте в виду, что по состоянию на сентябрь 2021 года библиотека все еще находится в экспериментальном состоянии на MacOS.

Функция модуля клавиатуры

В этом модуле есть много функций, которые можно использовать для имитации действий клавиатуры.

keyboard.write(message, [delay])- пишет сообщение с задержкой или без нее.

keyboard.press(key)- нажимает клавишу и удерживается до вызова функции release(key)

keyboard.release(key)- выпускает ключ.

keyboard.send(key)- нажимает и отпускает клавишу.

keyboard.add_hotkey(hotkey, function)- создает hotkey, которая при нажатии выполняет function.

keyboard.record(key)- записывает активность клавиатуры до нажатия key.

Тем не менее, мы рассмотрим все это. Вот быстрый пример:

Приветственное сообщение появляется на экране в терминале, как будто вы его написали. Вы можете очень легко автоматизировать команду и создать для нее псевдоним горячей клавиши. Вот (грубый) пример выхода из REPL Python, написания команды curl:

Функции write() и wait() клавиатуры

Команда write() записывает сообщение, как мы видели ранее, с необязательной задержкой при запуске. Если задержка не установлена, запись выполняется мгновенно. Это очень хорошо сочетается с функцией wait (), которая ожидает нажатия определенной клавиши.

Например, мы можем создать импровизированный макрос, привязанный, скажем, к 1, который отвечает на этот ввод новым сообщением. Обратите внимание, что вместо этого есть фактический способ создания горячих клавиш, который мы рассмотрим позже.

Мы создадим бесконечный цикл True, чтобы проверить, нажата ли клавиша, и вы можете запустить сценарий в фоновом режиме:

Функции клавиши press() и release()

Функция press() нажимает клавишу и отпускает ее, когда вы вызываете release() на той же клавише.

Тем не менее, вы можете удерживать некоторые специальные клавиши, такие как [SHIFT] или [CTRL] следующим образом:

Функции клавиатуры record() и play()

Функция record() принимает ключ запуска, до которого она записывает, и возвращает последовательность событий типа KeyboardEvent. Затем вы можете поместить эту последовательность событий в функцию play(), которая точно воспроизводит их, с дополнительным аргументом speed_factor. Он действует как множитель скорости исходных событий:

Если мы напечатаем recorded_events, они будут выглядеть примерно так:

Функция клавиатуры send()

Функция send() включает в себя press () и release () вместе и используется для отдельных клавиш, в отличие от функции write(), которая используется для целых предложений:

После нажатия клавиши s воспроизводятся клавиши w и a.

Функция press() также может принимать комбинации нажатых клавиш. Вы можете отправить комбинацию «ctrl + shift + s», например, и должен появиться диалог для сохранения файла, если вы находитесь в приложении, которое поддерживает эту операцию:

Хотя это неправильный способ добавить горячие клавиши. Также вы можете использовать функцию add_hotkey().

Функция клавиатуры add_abreviation()

Функция add_abbreviation() является довольно изящной, так как она позволяет определять сокращения для длинных входных данных и заменяет сокращенные версии сохраненными полными версиями.

Например, подобно тому, как такие службы, как Google, сохраняют вашу электронную почту для большинства форм ввода, вы можете создать свою собственную аббревиатуру и запустить ее через [SPACE]:

Функция клавиатуры add_hotkey()

Функция add_hotkey() принимает горячую клавишу, которую вы хотите сохранить, или комбинацию клавиш и функцию. Здесь легко передать анонимные лямбда-функции, хотя вы также можете добавить именованные функции.

Например, давайте добавим горячую клавишу для CTRL+j, которая запускает лямбда-функцию, регистрирующей это:

Горячая клавиша ctrl + alt + p сохраняется, и при нажатии этой комбинации вы должны увидеть вывод лямбды.

Заключение

Модуль клавиатуры представляет собой легкую и простую библиотеку, используемую для моделирования нажатий клавиш и простой автоматизации в Python. Он не очень функциональный, но может быть использован для автоматизации некоторых задач, которые вы можете выполнять в своей повседневной работе, или просто для развлечения.

Источник

Как повторить последнюю команду в оболочке интерпретатора python?

Как повторить последнюю команду? Обычные клавиши: Up, Ctrl+Up, Alt-p не работают. Они порождают бессмысленные персонажи.

25 ответов

Я использую следующее, чтобы включить историю в оболочке python.

Это мой .pythonstartup. Для переменной среды PYTHONSTARTUP задан этот путь к файлу.

вам нужно будет иметь readline модулей, rlcompleter, чтобы включить это.

затем нажмите на Получить новые ключи для выбора, и вы готовы выбрать любую комбинацию клавиш вы хотите.

Alt + p для предыдущей команды из histroy, Alt + n для следующей команды из истории.

вы не указали, какой интерпретатор. Предполагая, что вы используете IDLE.

из документации простоя: История команд:

Ctrl+p является нормальной альтернативой стрелке вверх. Убедитесь, что в вашей сборке Python включена gnu readline.

по умолчанию используйте ALT+p для предыдущей команды, вы можете изменить на стрелку вверх вместо в IDLE GUi > > параметры > > настройка IDLE > > клавиша > > привязка пользовательского ключа Нет необходимости запускать пользовательский скрипт, кроме того, модуль readlines не работает в Windows. Надеюсь, Это Поможет. 🙂

ALT + p работает для меня на увлеченном Python в Windows.

на Ubuntu Server 12.04 у меня была эта проблема после установки версии Python из исходного кода (Python3.4).

некоторые из комментариев здесь рекомендуют установить Ipython, и я хочу упомянуть, что у меня такое же поведение даже с Ipython. Из того, что я могу сказать, это проблема readline.

для сервера Ubuntu 12.04 мне пришлось установить libncurses-dev и libreadline-dev а затем установите Python из источника для включения поведения up-history (readline). Я в значительной степени сделал это:

после этого я удалил ранее установленный Python (не системный PYTHON, тот, который я установил из источника!) и переустановил его из источника, и все работало так, как ожидалось.

в моем mac os python3 вы можете использовать: control+P ранняя команда contrlo+N следующая команда

посмотреть под history-previous для команды вы можете изменить ее на то, что вам больше нравится здесь.

Я не понимаю, почему там так много длинных объяснений об этом. Все, что вам нужно сделать, это установить pyreadline С:

sudo порт установки py-readline (на Mac)

(предполагая, что вы уже установили Пип.)

Это на холостом ходу 2.7 на OSX Mavericks.

на CentOS, я исправляю это

а затем перекомпилировать python 3.4.

на OpenSUSE я исправляю это

ссылаясь на этот ответ:https://stackoverflow.com/a/26356378/2817654. Возможно,» pip3 install readline » является общим решением. Не пробовал свои CentOS.

Я нахожу информацию, которую я скопировал ниже, ответьте на вопрос

адаптируйтесь к холостому ходу: вместо того, чтобы нажимать стрелку вверх, чтобы вернуть предыдущую команду, если вы просто поместите курсор на предыдущую команду, которую хотите повторить, а затем нажмите «enter», эта команда будет повторена в текущей командной строке. Нажмите enter еще раз, и команда будет выполнена.

Force IDLE, чтобы адаптироваться к вам: если вы настаиваете на создании клавиш со стрелками в Окно командной строки IDLE работает так же, как и в любой другой командной строке, вы можете это сделать. Перейдите в меню «Параметры», выберите» Настройка простоя», а затем»ключи». Изменение клавиши, связанной с действиями» предыдущая команда «и» следующая команда», на стрелку вверх и стрелку вниз соответственно.

Ipython не всегда так. Мне это очень нравится, но если вы попробуете запустить Django shell с ipython. Что-то вроде>>>

он работает правильно, если вы используете virtualenv. Django нуждается в некоторых специальных включениях, которых нет при запуске ipython, потому что он запускает систему python по умолчанию, но не виртуальную.

Это может произойти при запуске python script.py vs просто python для входа в интерактивную оболочку, среди других причин отключения readline.

Стрелка вверх работает только в командной строке Python.

для anaconda для python 3.5 мне нужно было установить ncurses

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

если вы используете Debian Jessie, запустите это, чтобы исправить установку системы 2.7.9

чтобы исправить мой другой 3.5.2 установка, которую я установил с pyenv :

стрелка вверх работает и для меня. И я не думаю, что вам нужно установить модуль Readline для командной строки python builtin. U должен попробовать Ipython проверить. Или, может быть, это проблема вашей ключевой карты.

при использовании MacOSX нажмите control p на велосипеде и control n цикл вниз. Я использую оболочку IDLE Python 3.4.1.

Источник

Завершение программы в Python

Как сделать раннее завершение программы в Python? В самоучителе я нашёл несколько примеров:

Однако там не было объяснения какой метод лучше. Какой метод является наиболее «безаварийным»?

И заодно: есть ли в Python понятие Autocloseable объектов? Если я сделаю ранее завершение программы, нужно ли мне будет закрывать файлы и т.д.?

2 ответа 2

Короткий ответ:
Лучше использовать sys.exit()

Функция exit и аналогичная ей quit созданы для удобства работы в интерактивном режиме и их не рекомендуется использовать внутри скриптов:

They are useful for the interactive interpreter shell and should not be used in programs.

По факту они также просто поднимают исключение, и при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора:

Использовать sys.exit стоит потому, что эта функция лежит в стандартном модуле и будет всегда там доступна. Также это довольно явный способ выразить своё желание завершить программу.

The standard way to exit is sys.exit(n)

Этот код откроет файл, напечатает его содержимое на экран и закроет файл автоматически, даже если возникнет исключение при его печати.

is equivalent to this:

Вот небольшой пример работы этой функции:

Однако, при использовании конструкции with это оборачивание происходит автоматически, и все ресурсы закрываются корректно.

Источник

Цикл while в Python

Цикл while позволяет повторить одно или несколько действий до тех пор, пока заданное условие остается истинным.

Содержание страницы:
1. Цикл while в Python
1.2. Как прервать цикл while
1.3. Флаги в цикле while
2.1. Команда break в цикле while
2.2. Команда continue в цикле while
3. Предотвращение зацикливания в цикле while
4. Цикл while со списками
5. Цикл while со словарями

1. Цикл while в Python

Цикл while в Python используется во многих программах. Он позволяет выполнять программу пока остается истинным условие. Приведем пример перебора числовой последовательности в заданном диапазоне.

>>> number = 1 # присваиваем начальное значение переменной
>>> while number

Вначале присваиваем значение переменной number. Затем запускаем цикл while до тех пор, пока значение переменной number не будет больше 7. При каждом проходе цикла выводим значение number и затем увеличиваем его на 1. Как только значение number станет больше 7 цикл прекращается.

1.2. Как прервать цикл while на Python.

Предположим, что вам нужно остановить программу, когда пользователь захочет этого. Для этого в программе определяем признак завершения, и программа работает до тех пор, пока пользователь не ввел нужное значение. Признаком завершения может быть как число, так и строка или символ. Приведем пример простого цикла while при котором пользователь вводит слово, а оно возвращается, наоборот.

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.
python лучший язык программирования
яинавориммаргорп кызя йишчул nohtyp

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.
123456789
987654321

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’.
стоп
Программа завершена

Пока пользователь не введет слово «стоп», цикл будет начинаться заново.

1.3. Флаги в цикле while на Python

prompt = «\nВведите любое слово, и оно будет выведено наоборот»
prompt += «\nЕсли надоело введите команду ‘стоп’\n»
active = True
while active:
message = input(prompt)
if message == «стоп»:
active = False
print(«Программа завершена»)
else:
print(message[::-1])

В примере переменной active присваивается True и программа будет выполняться до тех пор, пока переменная active не станет равной False. Результат работы этой программы ничем не будет отличаться от программы в разделе 1.2. Вот что получим мы на выходе.

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’
Python
nohtyP

Введите любое слово, и оно будет выведено наоборот
Если надоело введите команду ‘стоп’
стоп
Программа завершена

Программа завершится если пользователь введет «стоп». После этого переменная active становится равной False и действие цикла прекращается.

2.1. Команда break в цикле while на Python

prompt = «\nВведите столицу США с заглавной буквы: »
active = True
while active:
capital = input(prompt)
if capital == ‘Вашингтон’:
print(‘Совершенно верно’)
break
else:
print(f» не является столицей США»)

В результате цикл while будет выполняться до тех пор, пока не будет введен правильный ответ, после чего сработает команда break и произойдет выход из цикла.

Введите столицу США с заглавной буквы: Лондон
Лондон не является столицей США

Введите столицу США с заглавной буквы: Москва
Москва не является столицей США

Введите столицу США с заглавной буквы: Вашингтон
Совершенно верно

2.2. Команда continue в цикле while на Python

>>> number = 0
>>> while number continue
. print(number, end=’ ‘)
.
2 4 6 8 10 12 14 16 18 20 >>>

Сначала создадим переменную number и присвоим ей начальное значение. После идет проверка условий цикла что значение number меньше 20. При входе в цикл значение number увеличивается на 1 и затем команда if проверяет остаток от деления на 2. Если остаток равен одному, то число не четное, команда continue приказывает Python игнорировать остаток кода и цикл запускается заново. Если остаток от деления равен нулю, то число выводится на экран и так до того пока number будет равен 20, затем условия цикла while не будут выполнены и цикл прекратится.

3. Предотвращение зацикливания в циклах while на Python

Для предотвращения зацикливания в терминальном окне введите Ctrl + C и всегда заранее проверяйте все условия цикла while и пути выхода из него.

4. Цикл while со списками в Python

>>> login = [‘qwerty’, ‘arfa’, ‘bond’, ‘chelsy’, ‘qwerty’, ‘serg’, ‘cat’, ‘qwerty’]
>>> while ‘qwerty’ in login:
. login. remove (‘qwerty’)
.
>>> print(login)
[‘arfa’, ‘bond’, ‘chelsy’, ‘serg’, ‘cat’]

5. Цикл while со словарями в Python

При каждом проходе цикла while программа может выполнять любое действие. Так же, как и со списками, цикл while работает и со словарями. Создадим программу, которая будет запрашивать у посетителя имя и записывать ответы на заданный вопрос и в конце выводить словарь на экран:

interview = <>
active = True
while active:
# Запрашиваем имя и ответ на вопрос
name = input («\nКак вас зовут? «)
question = input («Какая марка автомобиля вам нравиться «)
# Создаем список с ответами и добавляем первый ответ
answers = []
answers. append (question)
# Ответ сохраняем в словаре «имя: список ответов»
interview[name] = answers

# Запускаем второй цикл с возможностью добавления еще ответов к одному пользователю
active_2 = True
while active_2:
repeat = input («Желаете добавить еще один автомобиль? (yes/no) «)
if repeat == ‘no’:
active_2 = False
else :
question_n = input («Какая марка автомобиля вам еще нравиться «)
# Добавляем ответ в список
answers. append (question_n)

# Вопрос о продолжение опроса
repeat = input («Желаете продолжить опрос? (yes/no) «)
if repeat == ‘no’:
active = False
print(«\nОпрос завершен, все результаты:»)

# Переберем словарь и посмотрим ответы
for name, questions in interview.items():
print(f» \n <name.title()> любит автомобили марки:»)
for question in questions:
print(f» \t <question.title()>»)

Как вас зовут? bob
Какая марка автомобиля вам нравиться: audi
Желаете добавить еще один автомобиль? (yes/no) yes
Какая марка автомобиля вам еще нравиться: bmw
Желаете добавить еще один автомобиль? (yes/no) yes
Какая марка автомобиля вам еще нравиться: ford
Желаете добавить еще один автомобиль? (yes/no) no
Желаете продолжить опрос? (yes/no) yes

Как вас зовут? Artem
Какая марка автомобиля вам нравиться: porshe
Желаете добавить еще один автомобиль? (yes/no) no
Желаете продолжить опрос? (yes/no) no

Опрос завершен, все результаты:

Bob любит автомобили марки:
Audi
Bmw
Ford

Artem любит автомобили марки:
Porshe

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *