2016-12-08 6 views
1

Я долго искал хороший способ поместить строку в буфер обмена, используя только каталоги, включенные в python. Я попыталсяКопирование строки в буфер обмена изначально python 3

import subprocess 
def copy2clip(txt): 
    cmd='echo '+txt.strip()+'|clip' 
    return subprocess.check_call(cmd, shell=True) 

и затем вызывая

copy2clip('text') 

Однако это, казалось, добавить дополнительную строку текста в буфер обмена.

Я также пробовал метод Tkinter, но при попытке вставить его просто удалил окно python.

Я бегу питона 3.5.2 на окнах 10.

+0

Использовать 'echo -n ...'. –

+2

Нет необходимости использовать оболочку, что особенно плохо здесь, потому что 'shell = True' не использует параметр'/U', который делает внутренние команды cmd выводимыми Unicode. Вместо этого эхо-результат становится наиболее подходящим для кодировки консоли или кодовой страницы ANSI. Вместо этого рассмотрите возможность использования новой функции 'run', например. 'subprocess.run (['clip.exe'], input = txt.strip(). encode ('utf-16'), check = True)'. – eryksun

ответ

2

Я использовал

import subprocess 
txt = "Save to clipboard!" 
subprocess.run(['clip.exe'], input=txt.strip().encode('utf-16'), check=True) 

работал отлично. Спасибо @eryksun за комментарий к этому ответу.