Ich habe eine Python 3-Anwendung, die irgendwann eine Zeichenfolge in die Zwischenablage setzen sollte. Ich verwende Systembefehle echo
und pbcopy
und es funktioniert ordnungsgemäß. Wenn die Zeichenfolge jedoch einen Apostroph enthält (und wer weiß, vielleicht andere Sonderzeichen), wird sie mit einem Fehler beendet. Hier ist ein Codebeispiel:Wie übergibt man in Python3/OS X einen String mit Apostroph an einen Terminalbefehl?
import os
my_text = "Peoples Land"
os.system("echo '%s' | pbcopy" % my_text)
Es funktioniert in Ordnung. Aber wenn Sie die Zeichenfolge korrigieren „Volks Land“, gibt er diesen Fehler:
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
Ich denke, ich muss irgendwie die Zeichenfolge codieren, bevor es an die Shell-Befehle vorbei, aber ich weiß noch nicht, wie. Was ist der beste Weg, dies zu erreichen?
Ich habe versucht, diesen Vorschlag in meinem Code zu implementieren, aber ich hatte eine harte Zeit herauszufinden, warum es fehlgeschlagen ist. Ich fand heraus, dass ich die einfachen Anführungszeichen immer noch entfernen musste, genau wie du es getan hast, wenn du 'shlex.quote()' benutzt hast. Jetzt klappt es ok;) –