Comment lire du texte depuis le presse-papiers (windows) à partir de python? Essayez win32clipboard à partir du paquetage win32all (qui est probablement installé si vous êtes sur ActiveState Python)Comment lire du texte depuis le presse-papiers (Windows) à partir de python?
Répondre
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 obtient alors il:
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 terminé l'examen ou de changer 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 un objet sur le presse-papiers après avoir appelé CloseClipboard.
Savez-vous s'il existe un moyen d'utiliser l'instruction 'with '? – Norfeldt
À noter, dans py34, win7, SetClipboardText n'a pas fonctionné sans un appel précédent à EmptyClipboard – CoderTao
Ce module est utile si vous voulez effectuer des opérations plus complexes, par ex. obtenir le contenu au format HTML hors du presse-papiers. Voir http://stackoverflow.com/questions/17298897/how-can--copy-from-an-html-file-to-the-clipboard-in-python-in-formatted-text –
Voir exemple ici: http://code.activestate.com/recipes/474121/
J'ai vu beaucoup de suggestions pour utiliser le module win32, mais Tkinter fournit la plus courte et la plus simple méthode que je l'ai vu, comme dans ce post: How do I copy a string to the clipboard on Windows using Python?
Plus, Tkinter est dans la bibliothèque standard de python .
Un code qui va avoir la valeur du presse-papiers via Tkinter: de Tkinter import Tk [\ nl] r = Tk() [\ nl] résultat = r.selection_get (sélection = "clipboard") [\ nl] r.destroy() – mgkrebbs
La réponse la plus mise à jour ci-dessus est bizarre de manière à effacer simplement le Presse-papiers, puis à récupérer le contenu (qui est alors vide). On pourrait effacer le presse-papiers pour être sûr qu'un certain type de contenu de presse-papiers comme "texte formulé" ne "couvre" pas votre contenu en texte brut que vous souhaitez enregistrer dans le presse-papiers.
La pièce de code suivante remplace tous les sauts de ligne dans le presse-papiers par des espaces, puis supprime tous les espaces doubles et enregistre finalement le contenu vers 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()
Si vous ne souhaitez pas installer des packages supplémentaires , ctypes
peut faire le travail aussi bien.
import ctypes
CF_TEXT = 1
kernel32 = ctypes.windll.kernel32
user32 = ctypes.windll.user32
user32.OpenClipboard(0)
if user32.IsClipboardFormatAvailable(CF_TEXT):
data = user32.GetClipboardData(CF_TEXT)
data_locked = kernel32.GlobalLock(data)
text = ctypes.c_char_p(data_locked)
print(text.value)
kernel32.GlobalUnlock(data_locked)
else:
print('no text in clipboard')
user32.CloseClipboard()
vous pouvez facilement obtenir ce fait via le module intégré Tkinter qui est essentiellement une bibliothèque graphique. Ce code crée un widget vide pour obtenir le contenu du presse-papiers à partir du système d'exploitation.
#from tkinter import Tk # Python 3
from Tkinter import Tk
Tk().clipboard_get()
S'il vous plaît ajouter un commentaire à ce code, et (éventuellement) des liens vers une documentation pertinente. –
@jb. fait :) merci pour la note – kmonsoor
Pour mon programme de console les réponses avec tkinter ci-dessus ne fonctionne pas très bien pour moi parce que le .destroy() a toujours donné une erreur ,:
ne peut invoquer la commande « événement » : 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 3
import tkinter
r = tkinter.Tk()
text = r.clipboard_get()
r.withdraw()
r.update()
r.destroy()
Le r.withdraw() empêche le cadre de montrer un milisecond, puis il sera détruit donner le focus à la console.
Utiliser la bibliothèque Pythons Clipboard
Son simplement utilisé comme ceci:
import clipboard
clipboard.copy("this text is now in the clipboard")
print clipboard.paste()
J'ai découvert c'était la meilleure façon d'obtenir l'accès au presse-papiers du python:
1) Installer pyperclip : pip install pyperclip
2) Utilisation:
import pyperclip
s = pyperclip.paste()
pyperclip.copy(s)
# the type of s is string
Testé sur Win10 64 bits, Python 3.5. Semble fonctionner avec des caractères non-ASCII, aussi. Les caractères testés comprennent: ± ° ©© αβγθΔΨΦåäö
- 1. Comment lire du texte à partir d'un port série?
- 2. Commande (s) par lots Windows pour lire la première ligne à partir du fichier texte
- 3. C# Lire le formatage du texte?
- 4. Lire le joystick à partir de Flash
- 5. Comment lire un fichier texte chinois à partir de C#?
- 6. Comment appeler du code Python depuis Ruby?
- 7. Obtenir le texte sélectionné à partir du PDF dans le navigateur Web sous forme de Windows
- 8. Comment lire à partir d'un fichier texte en utilisant VBScript?
- 9. Comment lire-écrire dans/à partir du fichier texte avec des valeurs séparées par des virgules
- 10. Comment masquer le service Windows à partir du gestionnaire de tâches dans le bureau Windows
- 11. Lire le fichier à partir du port série en Java
- 12. Python: Lire un fichier (à partir d'un serveur externe)
- 13. comment lire un fichier mp3 à partir du milieu
- 14. comment lire les données à partir du fichier xml
- 15. Lire les variables d'environnement à partir du fichier dans Windows Batch (cmd.exe)
- 16. Comment lire et écrire à partir du port série
- 17. Obtenir du texte brut à partir du texte démarqué
- 18. Lire à partir DataGridView
- 19. Comment lire la version du fichier .exe windows?
- 20. Accès à une URL depuis l'application Windows
- 21. lire plusieurs fois à partir du même flux dans C#
- 22. Comment lire le PAN à partir d'une carte à puce EMV à partir de Java
- 23. Enregistrement à partir du microphone depuis le navigateur à l'aide de flex ou de traitement
- 24. caractères de fin de ligne à partir de lignes lues à partir du fichier texte, en utilisant Python
- 25. Comment lire depuis un os.pipe() sans être bloqué?
- 26. Taille du processus dans XP à partir de Python
- 27. PHP peut-il lire du texte à partir d'un fichier PowerPoint?
- 28. Comment enregistrer du son wav à partir d'un micro à l'aide de l'API Windows?
- 29. Appelez le script python depuis l'application AIR?
- 30. Récupère le texte d'un élément à partir du document XML
En relation avec [cette question] (http://stackoverflow.com/q/579687/296974). – glglgl
dans mon cas, seulement [dan] (http://stackoverflow.com/users/2084578/dan) réponse a fonctionné, qui utilise [presse-papiers] (https://pypi.python.org/pypi/clipboard/0.0.4) paquet. – Soorena