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

  • Почему Python «упреждающе» висит, пытаясь вычислить очень большое число?
  • Ошибка при запуске Open MPI в MPI_Init через Python
  • Как получить время начала процесса (или время простоя) в python
  • не может построить matplotlib (проблема пакета png)
  • Python - Как удалить границу окна? Я импортировал UI из Qt в Python и применил setWindowFlags
  • Многопроцессорность Python Pool.apply_async с общими переменными (значение)
  • Самый быстрый способ загрузить 3 миллиона объектов из ведра S3
  • Как я могу запретить пропуску Python входить через точки монтирования?
  • Аргументы Пихарма и sys.argv
  • Ошибка lxml «IOError: Ошибка чтения файла» при анализе facebook mobile в скрипте скрепера python
  • cat, grep и cut - перевод на python
  • Python - лучший язык программирования в мире.