44

の結果を元に戻すにはどうすればよいshlex.splitですか? つまり、引用したい文字列が与えられた場合、「Unix シェルに似た」list引用符付き文字列を取得するにはどうすればよいでしょうか?

Update0

私は Python のバグを見つけ、対応する機能のリクエストをここで行いました。

4

6 に答える 6

29

これで(3.3)shlex.quote関数ができました。移動して文書化したのは他にありませんpipes.quote(コードを使用してpipes.quoteも引き続き機能します)。全体の議論については、http://bugs.python.org/issue9723を参照してください。

subprocess.list2cmdline使用してはならないプライベート関数です。ただし、移動してshlex正式に公開することはできます。http://bugs.python.org/issue1724822も参照してください。

于 2011-07-29T13:39:08.747 に答える
20

使ってpipes.quoteみませんか?

import pipes
strings = ["ls", "/etc/services", "file with spaces"]
" ".join(pipes.quote(s) for s in strings)
# "ls /etc/services 'file with spaces'"

于 2011-01-20T15:11:33.110 に答える
6

subprocessを使用しsubprocess.list2cmdline()ます。公式のパブリック API ではありませんが、subprocessドキュメントに記載されており、かなり安全に使用できると思います。pipes.open()(良くも悪くも)よりも洗練されています。

于 2011-07-24T04:37:10.977 に答える