Есть ли способ напрямую отправить вывод python в буфер обмена?

Например, если скрипт python выплюнет строку, дающую путь к новому записанному файлу, который я буду редактировать сразу после запуска скрипта, было бы очень приятно, чтобы он был отправлен непосредственно в системный буфер обмена, а не в STDOUT ,

4 Solutions collect form web for “Есть ли способ напрямую отправить вывод python в буфер обмена?”

Вы можете использовать внешнюю программу, xsel :

 from subprocess import Popen, PIPE p = Popen(['xsel','-pi'], stdin=PIPE) p.communicate(input='Hello, World') 

С помощью xsel вы можете настроить буфер обмена, над которым хотите работать.

  • -p работает с выбором PRIMARY . Это средний щелчок.
  • -s работает с выбором SECONDARY . Я не знаю, больше ли это используется.
  • -b работает с выбором CLIPBOARD . Это ваш Ctrl + V

Узнайте больше о буферах X здесь и здесь .

Быстрая и грязная функция, которую я создал для этого:

 def paste(str, p=True, c=True): from subprocess import Popen, PIPE if p: p = Popen(['xsel', '-pi'], stdin=PIPE) p.communicate(input=str) if c: p = Popen(['xsel', '-bi'], stdin=PIPE) p.communicate(input=str) paste('Hello', False) # pastes to CLIPBOARD only paste('Hello', c=False) # pastes to PRIMARY only paste('Hello') # pastes to both 

Вы также можете попробовать clipboard pyGTK:

 import pygtk pygtk.require('2.0') import gtk clipboard = gtk.clipboard_get() clipboard.set_text('Hello, World') clipboard.store() 

Это работает с выбором Ctrl + V для меня.

Это не вопрос Python, а вопрос оболочки. Вы уже можете отправить вывод скрипта Python (или любой команды) в буфер обмена вместо стандартного вывода, xclip вывод скрипта Python в команду xclip .

 myscript.py | xclip 

Если xclip еще не установлен в вашей системе (это не по умолчанию), вот как вы его получите:

 sudo apt-get install xclip 

Если вы хотите сделать это прямо из своего сценария Python, я думаю, вы можете выложить и запустить команду xclip с помощью os.system() которая проста, но не рекомендуется. Существует несколько способов сделать это (см. Модуль subprocess для текущего официального пути). Команда, которую вы хотите выполнить, это что-то вроде:

 echo -n /path/goes/here | xclip 

Бонус: в Mac OS X вы можете сделать то же самое, pbcopy к pbcopy .

Поскольку он был опубликован в другом ответе , если вы хотите решить это в python, вы можете использовать Pyperclip, который имеет дополнительное преимущество в качестве кросс-платформенного.

 >>> import pyperclip >>> pyperclip.copy('The text to be copied to the clipboard.') >>> pyperclip.paste() 'The text to be copied to the clipboard.' 

Как отмечали другие, это не «Python и батареи», поскольку он включает операции с графическим интерфейсом. Так что это зависит от платформы. Если вы находитесь в окнах, вы можете использовать win32 Python Module и Access win32 clipboard. Мое предложение, однако, будет собирать один инструментарий GUI (PyQT / PySide для QT, PyGTK для GTK + или wxPython для wxWidgets). Затем используйте операции с буфером обмена. Если вам не нужны тяжелые вещи из наборов инструментов, сделайте свою обертку, которая будет использовать пакет win32 на окнах и все, что доступно на другой платформе, и соответственно переключитесь!

Для wxPython вот несколько полезных ссылок:

http://www.wxpython.org/docs/api/wx.Clipboard-class.html

http://wiki.wxpython.org/ClipBoard

http://www.python-forum.org/pythonforum/viewtopic.php?f=1&t=25549

Interesting Posts

Как сделать объединение мультииндекса данных с единым индексом данных?

Django Haystack – Показать результаты, не требуя поискового запроса?

Запустить скрипт с udev после подключения USB к RPi

Разница между двумя ближайшими к нулю продуктами: решение без грубой силы?

Объект PipelinedRDD не имеет атрибута 'toDF' в PySpark

test argparse с unittest и mock

Непонимание python os.path.abspath

Mongoengine очень медленный на больших документах, объединенных с использованием родного пимонго

Подсчитывайте и печатайте количество файлов в подпапках с помощью Python

разброс участков в морском / matplotlib с размером и цветом точки, заданной непрерывной колонкой данных

Как распечатать элементы связанного списка?

В Tensorflow, как разгадать сплющенные индексы, полученные tf.nn.max_pool_with_argmax?

Вопросы о django form.errors, чтобы получить необработанные сообщения об ошибках

Как я могу: Генерировать 40/64 бит WEP-ключа в Python?

Как изменить порядок списка?

Python - лучший язык программирования в мире.