как я могу скопировать строку в буфер обмена Windows? python 3

Если у меня есть переменная var = 'this is a variable'

как я могу скопировать эту строку в буфер обмена Windows, чтобы я мог просто Ctrl + v, и она была перенесена в другое место? Я не хочу использовать ничего, кроме встроенного, надеюсь, это возможно.

Благодарность!


person Toby Smith    schedule 13.12.2013    source источник
comment
используйте утилиту clip cmd. копирует ввод в буфер обмена   -  person dawg    schedule 14.12.2013


Ответы (2)


Ты можешь это сделать:

>>> import subprocess
>>> def copy2clip(txt):
...    cmd='echo '+txt.strip()+'|clip'
...    return subprocess.check_call(cmd, shell=True)
...
>>> copy2clip('now this is on my clipboard')
person dawg    schedule 13.12.2013
comment
Могу я спросить, почему голосование против? - person dawg; 05.04.2014
comment
Предположительно из-за опасности подобного копирования шелл-кода. Интересно, что сделает x && rm -rf / при передаче в вашу функцию. - person Cees Timmerman; 06.02.2015
comment
@CeesTimmerman: Исходя из этого, нельзя использовать вызов подпроцесса ни для чего. Совершенно безопасно использовать подпроцесс, если программа сохраняет контроль над тем, что вызывается. В самом деле, вам даже не нужно вызывать подпроцесс, чтобы стереть диск. shutil.rmtree() сделал бы это или os.remove() сделал бы хорошо. Я думаю, вы объединяете использование пользовательских строк или произвольных строк и выполнение кода с теми, а не просто вызов оболочки со строкой, созданной внутри программы. - person dawg; 06.02.2015
comment
copy2clip должен делать именно это, а не стирать мой диск, когда пользователь пытается скопировать опасную команду. Иначе назовите его copy2clip_unless_its_a_shell_script. Я просто попытался скопировать |dir и вместо этого получил хороший список каталогов. hello\nworld тоже терпит неудачу. - person Cees Timmerman; 09.02.2015
comment
Это так по своей сути небезопасно. - person John Frazer; 18.11.2017
comment
@JohnFrazer: Уточните, пожалуйста - person dawg; 18.11.2017

Pyperclip предоставляет крест -платформенное решение.

Одно замечание об этом модуле: он кодирует строки в ASCII, поэтому вам нужно было выполнить некоторую работу по кодированию / декодированию ваших строк, чтобы сопоставить их до запуска через Pyperclip.

Пример:

import pyperclip

#Usual Pyperclip usage:
string = "This is a sample string."
pyperclip.copy(string)
spam = pyperclip.paste()

#Example of decoding prior to running Pyperclip:
strings = open("textfile.txt", "rb")
strings = strings.decode("ascii", "ignore")
pyperclip.copy(strings)
spam = pyperclip.paste()

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

person KAG1224    schedule 25.02.2014
comment
Pyperclip теперь поддерживает Unicode в Windows. - person Cees Timmerman; 06.02.2015