2017-10-10 8 views
-1

Avoir de la difficulté à interagir avec le presse-papiers à partir de python (ou du pasteboard comme Mac OS l'appelle) à partir de Python. Courir High Sierra.Coller dans un champ de texte à partir de python sur Mac

trouvé quelques exemples: http://code.activestate.com/recipes/410615/ http://www.devx.com/opensource/Article/37233/0/page/3

Cependant, il semble qu'ils utilisent des outils dépréciées que je ne peux pas charger.

existe Scrap mais semble manquer la méthode GetCurrentScrap:

>>> import Carbon.Scrap 
>>> from Carbon.Scrap import GetCurrentScrap 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: cannot import name GetCurrentScrap 
>>> 

Merci

EDIT

partie retiré de la question qui était erronée

+0

'pbpaste' reste dans les versions actuelles d'OS X. Votre code n'utilise pas du tout de pbaste, donc il n'est pas clair quelle est votre question. Pour l'accès programmatique, vous aurez plus de chance en utilisant pyobjc - http://www.macdrifter.com/2011/12/python-and-the-mac-clipboard.html – pvg

+0

Vous avez raison sur pbpaste. Quelque chose à propos de la virtualenv que j'étais était en train de me donner ces erreurs python dans le deuxième extrait juste en appelant pbpaste à partir de l'invite bash. Cependant, cela fonctionne à partir d'un shell propre. Cependant, j'ai toujours le problème du premier extrait, qui est que je ne peux pas importer GetCurrentScrap, et que tous les documents à ce sujet que je peux trouver disent qu'il est déprécié. – arcadeperfect

+0

Lisez l'URL que je vous ai donnée. Tout carbone devrait vous donner une pause, utilisez pyobjc et le cacao. – pvg

Répondre

0

J'utilise ceci:

import subprocess 

def getClipboardData(): 
p = subprocess.Popen(['pbpaste'], stdout=subprocess.PIPE) 
retcode = p.wait() 
data = p.stdout.read() 
return data 

def setClipboardData(data): 
p = subprocess.Popen(['pbcopy'], stdin=subprocess.PIPE) 
p.stdin.write(data) 
p.stdin.close() 
retcode = p.wait()