Question

J'aimerais que mon programme python place du texte dans le presse-papier du Mac.

Est-ce possible?

Était-ce utile?

La solution

Nouvelle réponse:

Cette page suggère:

  

Mise en œuvre pour tous Mac OS X   Versions

     

L'autre module Mac   (MacSharedClipboard.py, dans le listing 4)   implémente l'interface presse-papier sur   haut de deux programmes en ligne de commande   appelé pbcopy (qui copie le texte dans   le presse-papiers) et pbpaste (qui   colle le texte dans le texte   presse-papier). Le préfixe " pb " représente   " presse-papier, " le terme Mac pour   presse-papiers.

Ancienne réponse:

Apparemment oui:

http://code.activestate.com/recipes/410615/

est un script simple montrant comment le faire.

Edit: Je viens de me rendre compte que cela dépend de Carbon, ce qui pourrait ne pas être idéal… dépend un peu de l'utilisation que vous en faites.

Autres conseils

Comment écrire une chaîne Unicode dans le presse-papier du Mac:

import subprocess

def write_to_clipboard(output):
    process = subprocess.Popen(
        'pbcopy', env={'LANG': 'en_US.UTF-8'}, stdin=subprocess.PIPE)
    process.communicate(output.encode('utf-8'))

Comment lire une chaîne Unicode dans le presse-papier du Mac:

import subprocess

def read_from_clipboard():
    return subprocess.check_output(
        'pbpaste', env={'LANG': 'en_US.UTF-8'}).decode('utf-8')

Fonctionne à la fois sur Python 2.7 et Python 3.4.

Le code suivant utilise PyObjC ( http://pyobjc.sourceforge.net/ )

from AppKit import NSPasteboard, NSArray

pb = NSPasteboard.generalPasteboard()
pb.clearContents()
a = NSArray.arrayWithObject_("hello world")
pb.writeObjects_(a)

As expliqué dans la documentation Cocoa , la copie nécessite trois étapes:

  • récupérer le presse-papier
  • effacez-le
  • remplissez-le

Vous remplissez la table de travail avec un tableau d'objets (ici, un ne contient qu'une chaîne).

Un moyen simple:

cmd = 'echo %s | tr -d "\n" | pbcopy' % str
os.system(cmd)

Une approche multiplateforme:
https://stackoverflow.com/a/4203897/805627

from Tkinter import Tk
r = Tk()
r.withdraw()
r.clipboard_clear()
r.clipboard_append('i can has clipboardz?')
r.destroy()

Je sais que c’est un billet ancien, mais j’ai trouvé une solution très élégante à ce problème.

Il existe une bibliothèque appelée PyClip , accessible à l'adresse https: / /github.com/georgefs/pyclip-copycat .

La syntaxe est assez simple (exemple tiré du référentiel Github):

import clipboard

# copy some text to the clipboard
clipboard.copy('blah blah blah')

# get the text currently held in the clipboard
text = clipboard.paste()

une fois que vous avez passé clipboard.copy ('foo') , vous pouvez simplement cmd + v pour obtenir le texte

.

si vous voulez simplement mettre du texte dans le presse-papier du Mac, vous pouvez utiliser la commande pbcopy du shell.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top