Voici un exemple qui définit d'abord les données du presse-papiers puis les obtient:
import win32clipboard# set clipboard data
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText('testing 123')
win32clipboard.CloseClipboard()# get clipboard data
win32clipboard.OpenClipboard()
data = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()print data
Un rappel important de la documentation:
Lorsque la fenêtre a fini d'examiner ou de modifier le presse-papiers, fermez le presse-papiers en appelant CloseClipboard. Cela permet à d'autres fenêtres d'accéder au presse-papiers. Ne placez pas d'objet dans le presse-papiers après avoir appelé CloseClipboard.
Savez-vous s'il existe un moyen d'utiliser l'instruction «with»?
Norfeldt du
3
À noter, dans py34, win7, SetClipboardText ne fonctionnait pas sans un appel préalable à EmptyClipboard
CoderTao
Ce module est utile si vous souhaitez effectuer des opérations plus complexes, par exemple extraire le contenu au format HTML du presse-papiers. Voir stackoverflow.com/questions/17298897/…
xji
2
@Norfeldt S'il n'y a pas de méthode native, vous pouvez facilement créer votre propre objet personnalisé qui prend en charge "avec"
Elijas
39
vous pouvez facilement le faire via le module intégré Tkinter qui est essentiellement une bibliothèque GUI. Ce code crée un widget vide pour obtenir le contenu du presse-papiers du système d'exploitation.
Un peu de code qui obtiendra la valeur du presse-papiers via Tkinter: de Tkinter import Tk [\ nl] r = Tk () [\ nl] result = r.selection_get (selection = "CLIPBOARD") [\ nl] r.destroy ()
mgkrebbs
18
Si vous ne souhaitez pas installer de packages supplémentaires, vous ctypespouvez également faire le travail.
convient-il pour 3,6? il est installé avec succès mais lorsqu'il est utilisé avec la méthode paste (), il me donne une erreur: "à partir de la version d' importation PySide comme PYSIDE_VERSION # analyse: ignore ModuleNotFoundError: Aucun module nommé 'PySide'". Quand j'ai essayé d'installer Pyside, il dit qu'il n'est pas pris en charge dans la version 3.6
Gaurav
Oui, cela devrait fonctionner sur Python 3.6, et je viens de tester avec Python 3.7.4 (64 bits). En regardant le setup.py du package, il ne devrait avoir aucune dépendance à Pyside ou à tout autre package. Êtes-vous sûr que la commande coller essaie d'utiliser Pyside?
np8
Oui, la commande coller recherche Pyside et comme Pyside ne prend en charge que jusqu'à python 3.4, elle donne une erreur
gaurav
Cela semble être la solution la plus simple pour WSL avec python3.6
énoncé
11
La réponse la plus votée ci-dessus est étrange dans la mesure où elle efface simplement le presse-papiers puis obtient le contenu (qui est alors vide). On pourrait effacer le presse-papiers pour être sûr que certains types de contenu de presse-papiers comme «texte formaté» ne «couvrent» pas le contenu de texte brut que vous souhaitez enregistrer dans le presse-papiers.
Le morceau de code suivant remplace toutes les nouvelles lignes dans le presse-papiers par des espaces, puis supprime tous les espaces doubles et enregistre enfin le contenu dans le presse-papiers:
import win32clipboard
win32clipboard.OpenClipboard()
c = win32clipboard.GetClipboardData()
win32clipboard.EmptyClipboard()
c = c.replace('\n',' ')
c = c.replace('\r',' ')while c.find(' ')!=-1:
c = c.replace(' ',' ')
win32clipboard.SetClipboardText(c)
win32clipboard.CloseClipboard()
Pour mon programme de console, les réponses avec tkinter ci-dessus ne fonctionnaient pas tout à fait pour moi car le .destroy () donnait toujours une erreur ,:
impossible d'appeler la commande "event": l'application a été détruite lors de l'exécution ...
ou lors de l'utilisation de .withdraw (), la fenêtre de la console n'a pas récupéré le focus.
Pour résoudre ce problème, vous devez également appeler .update () avant le .destroy (). Exemple:
# Python 3import tkinter
r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()
Le r.withdraw () empêche le cadre de s'afficher pendant un milliseconde, puis il sera détruit en renvoyant le focus à la console.
Réponses:
Vous pouvez utiliser le module appelé win32clipboard , qui fait partie de pywin32 .
Voici un exemple qui définit d'abord les données du presse-papiers puis les obtient:
Un rappel important de la documentation:
la source
vous pouvez facilement le faire via le module intégré Tkinter qui est essentiellement une bibliothèque GUI. Ce code crée un widget vide pour obtenir le contenu du presse-papiers du système d'exploitation.
la source
tkinter
au lieu deTkinter
. Sinon, cela ne fonctionnait pas sur mon python 3.7.3 64bit win10.J'ai vu de nombreuses suggestions pour utiliser le module win32, mais Tkinter fournit la méthode la plus courte et la plus simple que j'ai vue, comme dans cet article: Comment copier une chaîne dans le presse-papiers sous Windows en utilisant Python?
De plus, Tkinter est dans la bibliothèque standard de python.
la source
Si vous ne souhaitez pas installer de packages supplémentaires, vous
ctypes
pouvez également faire le travail.la source
J'ai découvert que c'était le moyen le plus simple d'accéder au presse-papiers à partir de python:
1) Installez pyperclip:
pip install pyperclip
2) utilisation:
Testé sur Win10 64 bits, Python 3.5 et Python 3.7.3 (64 bits). Semble également fonctionner avec des caractères non ASCII. Les caractères testés incluent ± ° © © αβγθΔΨΦåäö
la source
La réponse la plus votée ci-dessus est étrange dans la mesure où elle efface simplement le presse-papiers puis obtient le contenu (qui est alors vide). On pourrait effacer le presse-papiers pour être sûr que certains types de contenu de presse-papiers comme «texte formaté» ne «couvrent» pas le contenu de texte brut que vous souhaitez enregistrer dans le presse-papiers.
Le morceau de code suivant remplace toutes les nouvelles lignes dans le presse-papiers par des espaces, puis supprime tous les espaces doubles et enregistre enfin le contenu dans le presse-papiers:
la source
La bibliothèque standard python le fait ...
la source
Essayez win32clipboard du package win32all (qui est probablement installé si vous êtes sur ActiveState Python).
Voir l'exemple ici: http://code.activestate.com/recipes/474121/
la source
Pour mon programme de console, les réponses avec tkinter ci-dessus ne fonctionnaient pas tout à fait pour moi car le .destroy () donnait toujours une erreur ,:
ou lors de l'utilisation de .withdraw (), la fenêtre de la console n'a pas récupéré le focus.
Pour résoudre ce problème, vous devez également appeler .update () avant le .destroy (). Exemple:
Le r.withdraw () empêche le cadre de s'afficher pendant un milliseconde, puis il sera détruit en renvoyant le focus à la console.
la source
Utiliser le presse-papiers de la bibliothèque Pythons
Il est simplement utilisé comme ceci:
la source
from pyperclip import copy, paste
.Une astuce pas très directe:
Utilisez la touche de raccourci pyautogui:
Par conséquent, vous pouvez coller les données du presse-papiers à votre guise.
la source