Come copio una stringa negli Appunti su Windows usando Python?


193

Sto cercando di creare un'applicazione Windows di base che crea una stringa dall'input dell'utente e la aggiunge agli Appunti. Come copio una stringa negli appunti usando Python?


4
In relazione a questa domanda .
— glglgl,

jaraco.clipboard lo fa (anche): clipboard.copy (variabile)
— JinSnow

Vedi anche la mia risposta a una domanda correlata sulla copia negli appunti usando Tkinter senza mostrare una finestra. Include una funzione Python che sostituisce / restituisce il testo degli Appunti usando Tkinter.
— Edward,

Risposte:


286

In realtà, pywin32e ctypessembra essere eccessivo per questo semplice compito. Tkinterè un framework GUI multipiattaforma, che viene fornito con Python per impostazione predefinita e ha metodi di accesso agli appunti insieme ad altre cose interessanti.

Se tutto ciò che serve è mettere del testo negli appunti di sistema, questo lo farà:

from Tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.update() # now it stays on the clipboard after the window is closed
r.destroy()

E tutto qui, non c'è bisogno di scherzare con le librerie di terze parti specifiche della piattaforma.

Se si utilizza Python 3, sostituirlo TKintercon tkinter.


55
Ottieni contenuti negli Appunti: result = r.selection_get (selection = "CLIPBOARD")
— MJ

34
@SurDin Tkinter è stato rinominato tkinter in python 3, quindi dipende dalla versione in uso.
— Onesto Abe

24
tutte le mie app non rispondono dopo aver incollato il contenuto degli Appunti con questa funzione, stranamente, ottenendo che il risultato funzioni bene.
— Bartlomiej Lewandowski il

14
Funziona se non chiamo r.destroy(). Una volta che lo chiamo, gli Appunti diventano vuoti e premendo Ctrl-V si può bloccare l'app di destinazione. (
— Sistema

8
Per me questo non funziona con Python 3.4, ma funziona con Python 2.7 (sì, con Tkinter anziché Tkinter)
— Matty,

79

Non avevo una soluzione, solo una soluzione alternativa.

Windows Vista in poi ha un comando integrato chiamato clipche prende l'output di un comando dalla riga di comando e lo inserisce negli Appunti. Ad esempio ipconfig | clip,.

Quindi ho creato una funzione con il osmodulo che prende una stringa e la aggiunge agli appunti usando la soluzione integrata di Windows.

import os
def addToClipBoard(text):
    command = 'echo ' + text.strip() + '| clip'
    os.system(command)

# Example
addToClipBoard('penny lane')

# Penny Lane is now in your ears, eyes, and clipboard.

Come notato in precedenza nei commenti, un aspetto negativo di questo approccio è che il echocomando aggiunge automaticamente una nuova riga alla fine del testo. Per evitare ciò, è possibile utilizzare una versione modificata del comando:

def addToClipBoard(text):
    command = 'echo | set /p nul=' + text.strip() + '| clip'
    os.system(command)

Se stai usando Windows XP funzionerà semplicemente seguendo i passaggi in Copia e incolla dal prompt dei comandi di Windows XP Pro direttamente negli Appunti .


20
cosa succede se textcontiene | calc.exe ?
— Willi Ballenthin,

2
@WilliBallenthin allora devi racchiuderlo tra virgolette doppie. Ma cosa succede se CONTIENE virgolette doppie? Quindi è necessario raddoppiare le doppie virgolette. text with " quotes and | pipediventa "text with "" quotes and | pipe" Sebbene ciò possa avere problemi su sistemi con finestre più vecchie di 95.
— ColBeseder

5
Funzione estremamente insicura ... Il contenuto inviato agli Appunti ora è un vettore di ingresso e quindi aumenta la superficie di attacco.
— Phil L.

2
Ho anche bisogno del supporto per le newline, quindi l'ho modificato per usarlo type. Scrivo il mio testo su file e utilizzo il comando type myfile.txt | clip.
— Mixopteryx,

1
Sebbene questa sia la risposta migliore per me, ha un problema (Python 3.5, Windows 10); una nuova riga indesiderata viene sempre aggiunta alla fine della stringa. Come evitarlo?
— mmj

42

Puoi anche usare ctypes per accedere all'API di Windows ed evitare il massiccio pacchetto pywin32. Questo è quello che uso (scusa lo stile scadente, ma l'idea è lì):

import ctypes

# Get required functions, strcpy..
strcpy = ctypes.cdll.msvcrt.strcpy
ocb = ctypes.windll.user32.OpenClipboard    # Basic clipboard functions
ecb = ctypes.windll.user32.EmptyClipboard
gcd = ctypes.windll.user32.GetClipboardData
scd = ctypes.windll.user32.SetClipboardData
ccb = ctypes.windll.user32.CloseClipboard
ga = ctypes.windll.kernel32.GlobalAlloc    # Global memory allocation
gl = ctypes.windll.kernel32.GlobalLock     # Global memory Locking
gul = ctypes.windll.kernel32.GlobalUnlock
GMEM_DDESHARE = 0x2000

def Get():
  ocb(None) # Open Clip, Default task

  pcontents = gcd(1) # 1 means CF_TEXT.. too lazy to get the token thingy...

  data = ctypes.c_char_p(pcontents).value

  #gul(pcontents) ?
  ccb()

  return data

def Paste(data):
  ocb(None) # Open Clip, Default task

  ecb()

  hCd = ga(GMEM_DDESHARE, len(bytes(data,"ascii")) + 1)

  pchData = gl(hCd)

  strcpy(ctypes.c_char_p(pchData), bytes(data, "ascii"))

  gul(hCd)

  scd(1, hCd)

  ccb()

5
Almeno in Python 2.6 x64, ho dovuto cambiare bytes(data,"ascii")in bytes(data). Grazie per aver risposto alla domanda, non posso usare pywin32 o tk o un numero di altre cose e questo funziona.
— Pat Corwin,

1
Non preoccuparti, ma tieni presente che i dati restituiti dagli Appunti sono in realtà in un'altra codifica, credo che sia Windows CP-1252. Questo è stato in qualche modo compromesso insieme, ma se non si utilizza la codifica corretta, i caratteri non ASCII genereranno un errore o decodificheranno in modo errato.
— Kapace,

I nomi delle variabili non dovrebbero avere bisogno di commenti e tutto dovrebbe supportare Unicode.
— Cees Timmerman,

bytes(data, "mbcs")funzionerà con la codifica predefinita di Windows. Mi ha permesso di caricare questo negli appunti "másreas ç saod é í ó u* ü ö ï/"e rileggerlo correttamente.
— mvbentes,

1
usare mbcs mi dà questo: OSError: eccezione: violazione di accesso scrivendo 0x0000000000000000
— Seaky Lone

35

È possibile utilizzare pyperclip - modulo appunti multipiattaforma. O Xerox - modulo simile, tranne per il fatto che il modulo Python win32 funziona su Windows.


pyperclipnon fa Unicode su Windows. win32clipboardlo fa.
— Cees Timmerman,

13
La mia pyperclippatch è stata accettata; c:\python34\Scripts\pip install --upgrade pyperclipper gestire il testo Unicode.
— Cees Timmerman,

1
Mi ci è voluto un po 'per scoprire che pyperclipnon è così paperclip. Inoltre, come nel 2016, pyperclip funziona anche con i caratteri Unicode. Ho testato i caratteri ± ° © αβγθΔΨΦåäö per lavorare su Win10 64-bit, con Python 3.5 e pyperclip 1.5.27.
— np8,

29

Puoi usare gli eccellenti panda, che hanno un supporto integrato negli appunti, ma devi passare attraverso un DataFrame.

import pandas as pd
df=pd.DataFrame(['Text to copy'])
df.to_clipboard(index=False,header=False)

3
+1. Mi piace questa soluzione. È ancora più semplice della soluzione Tkinter accettata. Se hai comunque importato i panda, non ci sono costi aggiuntivi. Funziona anche su tutte le piattaforme. Non richiede nemmeno (nella maggior parte dei casi) l'installazione di un nuovo pacchetto.
— ChaimG,

4
questo utilizza pyperclipcomunque, quindi un uso migliorepyperpclip
— maxbellec

1
Per la maggior parte delle persone (cioè io), pandasè prontamente disponibile ma import pyperclipnon funziona. Quindi non sono d'accordo con "usare meglio pyperclip".
— Doctor Core,

1
Se sei limitato ad usare solo i panda, puoi usare pyperclip direttamente import pandas.io.clipboard as pyperclipo nominarlo come preferisci. È lì che si trova all'interno pandas, almeno
— David Culbreth,

1
Questo sembra aggiungere un carattere di nuova riga alla stringa che copi
— Gijs van Oort

19

Il modo più semplice è con pyperclip . Funziona in Python 2 e 3.

Per installare questa libreria, utilizzare:

pip install pyperclip

Esempio di utilizzo:

import pyperclip

pyperclip.copy("your string")

Se vuoi ottenere il contenuto degli appunti:

clipboard_content = pyperclip.paste()

3
E il pyperclipmodulo viene fornito con Python? Quali versioni? Non lo vedo in Python 2.7 ...
— SamB,

8
Sì, ridimensiona una risposta che risolve facilmente il problema in meno di 5 righe; perché piccoli dettagli come il riferimento sono più importanti; ottimo uso di stackoverflow amico mio. Modificherò comunque per i nitpicker. Suggerimento per te: risposte downvote inutili o che non risolvono il problema; rispondi alle risposte che risolvono il problema o almeno siano utili e forniscano un suggerimento nei commenti per migliorare una risposta utile anziché effettuare il downgrade.
— maviz,

3
Senza riferimento, non risolvi nulla. Ma da quando hai aggiunto il link, rimuoverò il downvote, poiché la risposta è buona ora. Il mio problema più grande era che sembrava un'importazione di libreria standard; sembrava un codice che potevi copiare / incollare quando non lo era.
— Gloweye,

pyperclip.paste()non funziona con le immagini restituisce solo NoneTypeerrori. ma funziona con il tasto destro del mouse e copia quindi utilizzando Python per incollare i risultati copiati.
— JayRizzo,

11

Ho provato varie soluzioni, ma questa è la più semplice che supera il mio test :

#coding=utf-8

import win32clipboard  # http://sourceforge.net/projects/pywin32/

def copy(text):
    win32clipboard.OpenClipboard()
    win32clipboard.EmptyClipboard()
    win32clipboard.SetClipboardText(text, win32clipboard.CF_UNICODETEXT)
    win32clipboard.CloseClipboard()
def paste():
    win32clipboard.OpenClipboard()
    data = win32clipboard.GetClipboardData(win32clipboard.CF_UNICODETEXT)
    win32clipboard.CloseClipboard()
    return data

if __name__ == "__main__":  
    text = "Testing\nthe “clip—board”: 📋"
    try: text = text.decode('utf8')  # Python 2 needs decode to make a Unicode string.
    except AttributeError: pass
    print("%r" % text.encode('utf8'))
    copy(text)
    data = paste()
    print("%r" % data.encode('utf8'))
    print("OK" if text == data else "FAIL")

    try: print(data)
    except UnicodeEncodeError as er:
        print(er)
        print(data.encode('utf8'))

Testato OK in Python 3.4 su Windows 8.1 e Python 2.7 su Windows 7. Anche durante la lettura di dati Unicode con avanzamenti di riga Unix copiati da Windows. I dati copiati rimangono negli appunti dopo l'uscita di Python:"Testing the “clip—board”: 📋"

Se non desideri dipendenze esterne, utilizza questo codice (ora parte di multipiattaforma pyperclip- C:\Python34\Scripts\pip install --upgrade pyperclip):

def copy(text):
    GMEM_DDESHARE = 0x2000
    CF_UNICODETEXT = 13
    d = ctypes.windll # cdll expects 4 more bytes in user32.OpenClipboard(None)
    try:  # Python 2
        if not isinstance(text, unicode):
            text = text.decode('mbcs')
    except NameError:
        if not isinstance(text, str):
            text = text.decode('mbcs')
    d.user32.OpenClipboard(0)
    d.user32.EmptyClipboard()
    hCd = d.kernel32.GlobalAlloc(GMEM_DDESHARE, len(text.encode('utf-16-le')) + 2)
    pchData = d.kernel32.GlobalLock(hCd)
    ctypes.cdll.msvcrt.wcscpy(ctypes.c_wchar_p(pchData), text)
    d.kernel32.GlobalUnlock(hCd)
    d.user32.SetClipboardData(CF_UNICODETEXT, hCd)
    d.user32.CloseClipboard()

def paste():
    CF_UNICODETEXT = 13
    d = ctypes.windll
    d.user32.OpenClipboard(0)
    handle = d.user32.GetClipboardData(CF_UNICODETEXT)
    text = ctypes.c_wchar_p(handle).value
    d.user32.CloseClipboard()
    return text

Dove si ottiene win32clipboard? Non fa parte del mio Python 2.7. E perché pasteusa CF_TEXTinvece di CF_UNICODETEXT?
— Mark Ransom,

@MarkRansom pywin32 e perché il mio test ha funzionato bene fino a quando non ho reso più difficile l'utilizzo di 📋. Ho aggiornato il codice.
— Cees Timmerman,

11

Per qualche motivo non sono mai stato in grado di far funzionare la soluzione Tk per me. La soluzione di Kapace è molto più praticabile, ma la formattazione è contraria al mio stile e non funziona con Unicode. Ecco una versione modificata.

import ctypes

OpenClipboard = ctypes.windll.user32.OpenClipboard
EmptyClipboard = ctypes.windll.user32.EmptyClipboard
GetClipboardData = ctypes.windll.user32.GetClipboardData
SetClipboardData = ctypes.windll.user32.SetClipboardData
CloseClipboard = ctypes.windll.user32.CloseClipboard
CF_UNICODETEXT = 13

GlobalAlloc = ctypes.windll.kernel32.GlobalAlloc
GlobalLock = ctypes.windll.kernel32.GlobalLock
GlobalUnlock = ctypes.windll.kernel32.GlobalUnlock
GlobalSize = ctypes.windll.kernel32.GlobalSize
GMEM_MOVEABLE = 0x0002
GMEM_ZEROINIT = 0x0040

unicode_type = type(u'')

def get():
    text = None
    OpenClipboard(None)
    handle = GetClipboardData(CF_UNICODETEXT)
    pcontents = GlobalLock(handle)
    size = GlobalSize(handle)
    if pcontents and size:
        raw_data = ctypes.create_string_buffer(size)
        ctypes.memmove(raw_data, pcontents, size)
        text = raw_data.raw.decode('utf-16le').rstrip(u'\0')
    GlobalUnlock(handle)
    CloseClipboard()
    return text

def put(s):
    if not isinstance(s, unicode_type):
        s = s.decode('mbcs')
    data = s.encode('utf-16le')
    OpenClipboard(None)
    EmptyClipboard()
    handle = GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, len(data) + 2)
    pcontents = GlobalLock(handle)
    ctypes.memmove(pcontents, data, len(data))
    GlobalUnlock(handle)
    SetClipboardData(CF_UNICODETEXT, handle)
    CloseClipboard()

paste = get
copy = put

Quanto sopra è cambiato da quando questa risposta è stata creata per la prima volta, per gestire meglio i caratteri Unicode estesi e Python 3. È stato testato in Python 2.7 e 3.5 e funziona anche con emoji come \U0001f601 (😁).


@CeesTimmerman Mi piacerebbe avere un sistema Windows 8.1 per testare il perché. Potrei avere la possibilità di indagare più tardi oggi. Sei sicuro di avere del testo negli appunti?
— Mark Ransom,

Sì. Ho ampiamente testato il codice degli appunti in Python negli ultimi tre giorni.
— Cees Timmerman,

La put()funzione ha anche bisogno di lavoro; emoji "📋" (\ U0001f400) viene copiato come "🐀" (\ U0001f4cb) o "📋." diventa "📋".
— Cees Timmerman,

@CeesTimmerman che lo spiega. La rappresentazione Unicode interna è cambiata, non ricordo se fosse 3.3 o 3.4. Per risolverlo sarà necessaria una codifica esplicita su UTF-16. Non è un bug.
— Mark Ransom,

1
@YngvarKristiansen Sono finalmente riuscito a fare quei cambiamenti. Sono fiducioso ora che questo codice funziona per la maggior parte delle versioni moderne di Python e di ogni possibile carattere Unicode.
— Mark Ransom,


6

Ecco il modo più semplice e affidabile che ho trovato se stai bene a seconda dei Panda. Tuttavia, non penso che questo sia ufficialmente parte dell'API Pandas, quindi potrebbe rompersi con futuri aggiornamenti. Funziona a partire da 0.25.3

from pandas.io.clipboard import copy 
copy("test")

5

Puoi usare il modulo clipboard. È semplice ed estremamente facile da usare. Funziona con Mac , Windows e Linux .
Nota: è un'alternativa dipyperclip

Dopo l'installazione, importalo:

import clipboard

Quindi è possibile copiare in questo modo:

clipboard.copy("This is copied")

Puoi anche incollare il testo copiato:

clipboard.paste()

2
Questa sembra la soluzione migliore. appunti può essere installato con pip install clipboard.
— vy32

3

I widget hanno anche un metodo denominato .clipboard_get()che restituisce il contenuto degli Appunti (a meno che non si verifichi un tipo di errore basato sul tipo di dati negli Appunti).

Il clipboard_get()metodo è menzionato in questa segnalazione di bug:
http://bugs.python.org/issue14777

Stranamente, questo metodo non è stato menzionato nelle fonti di documentazione TkInter comuni (ma non ufficiali) a cui di solito mi riferisco.


3

Penso che ci sia una soluzione molto più semplice a questo.

name = input('What is your name? ')
print('Hello %s' % (name) )

Quindi eseguire il programma nella riga di comando

python greeter.py | clip

Questo invierà l'output del tuo file negli Appunti


È una buona soluzione, ma immagino che molto del pitone sia sviluppato ed eseguito in un IDE
— Jesse Reza Khorasanee,

2

Oltre alla risposta di Mark Ransom usando i tipi: questo non funziona per (tutti?) Sistemi x64 poiché le maniglie sembrano essere troncate a dimensioni int. Definire esplicitamente args e valori di ritorno aiuta a superare questo problema.

import ctypes
import ctypes.wintypes as w

CF_UNICODETEXT = 13

u32 = ctypes.WinDLL('user32')
k32 = ctypes.WinDLL('kernel32')

OpenClipboard = u32.OpenClipboard
OpenClipboard.argtypes = w.HWND,
OpenClipboard.restype = w.BOOL

GetClipboardData = u32.GetClipboardData
GetClipboardData.argtypes = w.UINT,
GetClipboardData.restype = w.HANDLE

EmptyClipboard = u32.EmptyClipboard
EmptyClipboard.restype = w.BOOL

SetClipboardData = u32.SetClipboardData
SetClipboardData.argtypes = w.UINT, w.HANDLE,
SetClipboardData.restype = w.HANDLE

CloseClipboard = u32.CloseClipboard
CloseClipboard.argtypes = None
CloseClipboard.restype = w.BOOL

GHND = 0x0042

GlobalAlloc = k32.GlobalAlloc
GlobalAlloc.argtypes = w.UINT, w.ctypes.c_size_t,
GlobalAlloc.restype = w.HGLOBAL

GlobalLock = k32.GlobalLock
GlobalLock.argtypes = w.HGLOBAL,
GlobalLock.restype = w.LPVOID

GlobalUnlock = k32.GlobalUnlock
GlobalUnlock.argtypes = w.HGLOBAL,
GlobalUnlock.restype = w.BOOL

GlobalSize = k32.GlobalSize
GlobalSize.argtypes = w.HGLOBAL,
GlobalSize.restype = w.ctypes.c_size_t

unicode_type = type(u'')

def get():
    text = None
    OpenClipboard(None)
    handle = GetClipboardData(CF_UNICODETEXT)
    pcontents = GlobalLock(handle)
    size = GlobalSize(handle)
    if pcontents and size:
        raw_data = ctypes.create_string_buffer(size)
        ctypes.memmove(raw_data, pcontents, size)
        text = raw_data.raw.decode('utf-16le').rstrip(u'\0')
    GlobalUnlock(handle)
    CloseClipboard()
    return text

def put(s):
    if not isinstance(s, unicode_type):
        s = s.decode('mbcs')
    data = s.encode('utf-16le')
    OpenClipboard(None)
    EmptyClipboard()
    handle = GlobalAlloc(GHND, len(data) + 2)
    pcontents = GlobalLock(handle)
    ctypes.memmove(pcontents, data, len(data))
    GlobalUnlock(handle)
    SetClipboardData(CF_UNICODETEXT, handle)
    CloseClipboard()

#Test run
paste = get
copy = put
copy("Hello World!")
print(paste())

0
import wx

def ctc(text):

    if not wx.TheClipboard.IsOpened():
        wx.TheClipboard.Open()
        data = wx.TextDataObject()
        data.SetText(text)
        wx.TheClipboard.SetData(data)
    wx.TheClipboard.Close()

ctc(text)

2
Una spiegazione del problema e della soluzione sarebbe utile.
— showdev

una funzione per copiare il testo negli appunti. usando la libreria wx python (non ho mai imparato TK) un'altra soluzione alla domanda posta qui.
— jlk,

Sentiti libero di modificare la risposta per includere la tua spiegazione del problema / soluzione @jlk - fare questo generalmente rende le risposte più utili. Inoltre, grazie per averci provato, ma suppongo che il poster originale avesse qualche motivo per chiedere specificamente Tk.
— acqua ghiacciata

0

Lo snippet che condivido qui sfrutta la capacità di formattare file di testo: cosa succede se si desidera copiare un output complesso negli Appunti? (Pronuncia una matrice numpy nella colonna o un elenco di qualcosa)

import subprocess
import os

def cp2clip(clist):

    #create a temporary file
    fi=open("thisTextfileShouldNotExist.txt","w")

    #write in the text file the way you want your data to be
    for m in clist:
        fi.write(m+"\n")

    #close the file
    fi.close()

    #send "clip < file" to the shell
    cmd="clip < thisTextfileShouldNotExist.txt"
    w = subprocess.check_call(cmd,shell=True)

    #delete the temporary text file
    os.remove("thisTextfileShouldNotExist.txt")

    return w

funziona solo per Windows, può essere adattato per Linux o Mac credo. Forse un po 'complicato ...

esempio:

>>>cp2clip(["ET","phone","home"])
>>>0

Ctrl + V in qualsiasi editor di testo:

ET
phone
home

0

Questa è la risposta migliorata dell'atomizzatore .

Nota 2 chiamate update()e 200 msritardo tra di loro. Proteggono le applicazioni di congelamento a causa di uno stato instabile degli appunti:

from Tkinter import Tk
import time     

r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('some string')

r.update()
time.sleep(.2)
r.update()

r.destroy()

0

Usa la libreria di appunti di Python!

import clipboard as cp
cp.copy("abc")

Gli appunti ora contengono 'abc'. Buona incolla!


0

Non tutte le risposte hanno funzionato per le mie varie configurazioni di Python, quindi questa soluzione utilizza solo il modulo di sottoprocesso. Tuttavia, copy_keyworddeve essere pbcopyper Mac o clipWindows:

import subprocess
subprocess.run('copy_keyword', universal_newlines=True, input='New Clipboard Value 😀')

Ecco un codice più ampio che controlla automaticamente qual è l'attuale sistema operativo:

import platform
import subprocess

copy_string = 'New Clipboard Value 😀'

# Check which operating system is running to get the correct copying keyword.
if platform.system() == 'Darwin':
    copy_keyword = 'pbcopy'
elif platform.system() == 'Windows':
    copy_keyword = 'clip'

subprocess.run(copy_keyword, universal_newlines=True, input=copy_string)

IDLE si arresta in modo anomalo quando si tenta di incollare quella stringa.
— Max Does Stuff

@MaxDoesStuff Provalo senza emoji. Non so perché ciò non funziona nell'IDLE predefinito, ma funziona in altri IDLE.
— Fetchinator7,

0

Puoi usare il modulo winclip32! installare:

pip install winclip32

copiare:

import winclip32
winclip32.set_clipboard_data(winclip32.UNICODE_STD_TEXT, "some text")

ottenere:

import winclip32
print(winclip32.get_clipboard_data(winclip32.UNICODE_STD_TEXT))

per maggiori informazioni: https://pypi.org/project/winclip32/


-1

Snippet di codice per copiare gli appunti:

Crea un codice Python wrapper in un modulo chiamato ( clipboard.py ):

import clr
clr.AddReference('System.Windows.Forms')
from System.Windows.Forms import Clipboard
def setText(text):
    Clipboard.SetText(text)

def getText():
    return Clipboard.GetText()

Quindi importa il modulo sopra nel tuo codice.

import io
import clipboard
code = clipboard.getText()
print code
code = "abcd"
clipboard.setText(code)

Devo dare credito al post sul blog Accesso agli Appunti in IronPython .


-2

puoi provare questo:

command = 'echo content |clip'
subprocess.check_call(command, shell=True)

-9
from Tkinter import Tk
clip = Tk()

forse puoi essere costruttivo e dire al messaggio di errore che ricevi e alla versione di Python che stai usando. le 2 righe che ho scritto funzionano con Python 2. grazie
— tagoma,

2
La domanda è "come faccio a copiare una stringa negli appunti su Windows usando Python". Certamente questo non si blocca, ma non soddisfa del tutto la domanda in quanto in realtà non fa nulla
— Antti Haapala,

2
D: come copio una stringa negli Appunti di Windows usando Python? A: importa una libreria GUI e crea l'oggetto root. . Siamo spiacenti, come fa a rispondere alla domanda?
— Martijn Pieters

con python3 puoi fare qualcosa del genere: import tkinter> tki = tkinter.Tk ()> tki.clipboard_clear () # cancella gli appunti attuali> mystring = 'Hello World'> tki.clipboard_append (mystring)> tki.clipboard_get ( ) Out [19]: 'Hello World'>
— tagoma,

2
Quindi fai che la risposta. Allo stato attuale non hai nulla di utile qui. L'hai provato su Windows?
— Martijn Pieters
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.