Есть ли способ напрямую отправить вывод 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

  • CherryPy препятствует отключению Twisted в Windows
  • Как использовать os.umask () в Python
  • Непрерывный поток данных из командной строки linux в скрипт python
  • Как считывать информацию о прокрутке колеса с / dev / input / mice?
  • Как использовать Python для создания подпроцесса GDB и отправки команд динамически на основе вывода?
  • UTF-8 и os.listdir ()
  • Запуск командной строки из аргументов python и piping из памяти
  • Python запускает дочерний подпроцесс, отсоединяется и выезжает
  • Python - лучший язык программирования в мире.