私はある時点でクリップボードに文字列を入れなければならないPython 3アプリケーションを持っています。システムコマンドecho
とpbcopy
を使用しており、正常に動作しています。ただし、文字列にアポストロフィが含まれている場合(および他の特殊文字が分かっている場合)、エラーが発生して終了します。コードサンプルは次のとおりです。Python3/OS Xでは、アポストロフィで文字列をターミナルコマンドに渡す方法は?
import os
my_text = "Peoples Land"
os.system("echo '%s' | pbcopy" % my_text)
問題なく動作します。しかし、あなたは文字列に「人民の土地を」修正した場合、それはこのエラーを返します。
sh: -c: line 0: unexpected EOF while looking for matching `''
sh: -c: line 1: syntax error: unexpected end of file
私は何とかシェルコマンドに渡す前に、文字列をエンコードする必要があると思いますが、私はまだ方法がわかりません。これを達成する最良の方法は何ですか?
私はこの提案を自分のコードに実装しようとしましたが、なぜ失敗したのか判断するのは難しかったです。 'shlex.quote()'を使うときと同じように、一重引用符を削除しなければならないことが分かりました。今それは大丈夫です;) –