Zwischenablage OHNE tkinter

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
HardwareManager
User
Beiträge: 59
Registriert: Freitag 31. Mai 2013, 21:18

Ich will meine Zwischenablage lesen, und wieder neu setzten.
Wie mache ich das ohne tkinter?
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
BlackJack

@HardwareManager: Welches andere GUI-Toolkit möchtest Du denn verwenden? ;-)
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Mit pyperclip:
import pyperclip
pyperclip.copy('The text to be copied to the clipboard.')
spam = pyperclip.paste()
HardwareManager
User
Beiträge: 59
Registriert: Freitag 31. Mai 2013, 21:18

BlackJack hat geschrieben:@HardwareManager: Welches andere GUI-Toolkit möchtest Du denn verwenden? ;-)
Ich will nätürlich gar kein GUI-Toolkit verwenden.

@Hellstorm
Was ist das auslesen und schreiben??
Und warum kommt das hier wenn ich es ausführe:

Code: Alles auswählen

import pyperclip
ImportError: No module named 'pyperclip'
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
HardwareManager
User
Beiträge: 59
Registriert: Freitag 31. Mai 2013, 21:18

darktrym hat geschrieben:Klick.
Danke für die schnelle Antwort.
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
HardwareManager
User
Beiträge: 59
Registriert: Freitag 31. Mai 2013, 21:18

Ich habe jetzt aber gemerkt das das

Code: Alles auswählen

>>> 
b'getcb'
>>> 
so etwas ausgibt wie kann ich das b und die ' Striche weg machen??
ImmmerEineGuteIdee
|=|=|=|=|=|=|=|
HardwareManager
BlackJack

@HardwareManager: Das ist die Zeichenkettendarstellung von einem Objekt vom Typ `bytes`. Da gibt es nichts ”weg zu machen”. Vielleicht möchtest Du die Bytes in eine Zeichenkette umwandeln. Dann musst Du aber wissen in welcher Kodierung die vorliegen.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

HardwareManager hat geschrieben:wie kann ich das b und die ' Striche weg machen??
Du schaust dir die zu Debug-Zwecken geeignete Repräsentation der Daten an. De facto handelt es sich um eine Sequenz mit den Byte-Werten 103, 101, 116, 99 und 98 die im ASCII-Code die Zeichenkette "getcb" ergeben. Ob die zurückgelieferten Daten jetzt aber wirklich nur ASCII sind (was eher nicht anzunehmen ist) musst du schon selber wissen bzw. der Dokumentation der von dir benutzten Bibliotheken entnehmen.
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

HardwareManager hat geschrieben:Ich habe jetzt aber gemerkt das das

Code: Alles auswählen

>>> 
b'getcb'
>>> 
so etwas ausgibt wie kann ich das b und die ' Striche weg machen??
Ich würde dir eventuell empfehlen, ein Python-Tutorial durchzuarbeiten. Insbesondere den Unterschied zwischen dem interaktiven Interpreter (Also wenn man „python“ in der Kommandozeile öffnet) sowie seine Besonderheiten, und dem Durchlaufen einer Quellcodedatei.

Ergänzend zu /me und BlackJack:

Wenn du den interaktiven Modus laufen lässt, kannst du einfach den „Inhalt“ jedes Objektes (also einer Variable, einer Funktion, einer Klasse usw) anzeigen lassen. Das macht man, indem man einfach den Namen des Objektes eingibt:

Code: Alles auswählen

>>> a = 5
>>> a
5
>>> b = "Test"
>>> b 
'Test' 
Das 'Test' ist aber nicht das, was in der Variable b selber drin ist. Python zeigt das nur so an. Als Beispiel kannst du z.B. von dem oben erwähnten Pyperclip den Namen eingeben:

Code: Alles auswählen

>>> import pyperclip                                                                               
>>> pyperclip                                                                                      
<module 'pyperclip' from 'C:\\Programmieren\\Python33\\lib\\site-packages\\pyperclip\\__init__.py'>
pyperclip selber ist ja keine Variable sondern ein Modul, und Python „bereitet“ dir das jetzt nur so auf, damit du etwas damit anfangen kannst. Dieses „<module 'pyperclip' from 'C:\\Programmieren\\Python33\\lib\\site-packages\\pyperclip\\__init__.py'>“ ist aber nicht das, was IN dem Modul drinsteht, sondern es zeigt nur nützliche Informationen an.

Das gleiche dann oben bei dem „b“: Python zeigt mit Hilfe der '...' an, dass es ein String/Zeichenkette ist. In der Variable selber sind allerdings nur die Buchstaben T e s t gespeichert. Bei der Variable a stehen keine '...' daneben, weil es ein Integer ist: Man sieht das daran, dass keine '...' dabei sind.

Würdest du das ganze jetzt mit Hilfe der print-Funktion ausgeben, „verschwinden“ die '...' automatisch. Bei der Ausgabe mit Hilfe von print gibt es keine Dateitypen mehr, sondern es zählt praktisch nur das Ergebnis, und das ist in jedem Fall einfach nur die Ausgabe. Ein Datentyp (also z.B. ein Integer oder ein String) kann der print-Funktion mitteilen, wie es ausgegeben werden soll:

Code: Alles auswählen

>>> print(a)                                                                                       
5                                                                                                  
>>> print(b)
Test
>>> print(pyperclip)
<module 'pyperclip' from 'C:\\Programmieren\\Python33\\lib\\site-packages\\pyperclip\\__init__.py'>
Wie du siehst, druckt a also 5, b druckt Test und pyperclip druckt wieder nur die gleiche Information wie oben (es gibt auch nichts anderes darzustellen).

Zu deiner Sache mit dem b"...":

Python (3) unterscheidet zwischen zwei Arten von Strings/Zeichenketten: Text und „Rohdaten“ (Byte-Strings). Text ist der normale String, den du mit "blabla" erstellst. Ein Computer selber kann aber mit Text nichts anfangen. Ein Computer kann nur mit Zahlen rechnen. Ein A ist einfach nur ein Bild, was dem Wert 65 zugeordnet ist (Das alles jetzt weiter zu erklären würde zu sehr ausarten, deswegen lies einfach mal den Artikel zu Zeichenkodierungen). Wie Python intern diesen Text speichert braucht dich im Grunde nicht zu interessieren, das ist auch egal. Wichtig ist nur zu verstehen, dass das einfach Text ist. Da kommen Buchstaben, Sätze usw. herein.

Ein Text-String lässt sich allerdings in Rohdaten umwandeln. Wie oben gesagt ist ein A eigentlich die Zahl 65 dezimal/41 hexadezimal. Ich kann nun also mit bla = b"\x41" den Wert 41hex in die Variable bla speichern. Das sagt aber erst einmal gar nichts aus, was das jetzt sein soll. Wie du im Wiki-Artikel zu Zeichenkodierung gelesen hast, ist eine Zeichenkodierung nur eine willkürliche Zuordnung von Bildern zu Werten. dieses 41hex kann also ein A sein, muss es aber gar nicht. Mit einem

Code: Alles auswählen

b"\x41".decode("cp1252")
kann ich diesen Wert in einen Text-String umwandeln. Als Ergebnis kriege ich wieder, wie oben, ein 'A' heraus, also einen Text-String.

Zu deiner Zwischenablage-Frage nun:

In der Windows-Zwischenablage liegen eben genau diese „Rohdaten”. Du kriegst also mit dem pyperclip.paste() genau diese Rohdaten heraus. Die musst du dann erst wieder in Python-interne Text-Strings umwandeln, wie oben.

Von daher, mach einfach folgendes: Wenn du „Hähä“ in der Zwischenablage hast, nutzt du folgenden Code:

Code: Alles auswählen

>>> zwischenablage = pyperclip.paste().decode("cp1252")
Windows nutzt auf einem deutschen System die Kodierung CP1252. Du wandelst also direkt den Code aus der Zwischenablage um und speicherst ihn dann in die Variable zwischenablage.
Antworten