0

インタラクティブインタープリターを使用していて、それを書いた場合は'\\ '印刷されますが、書いた場合は印刷されるというPythonのことを知っています。'\\ 'print '\\ ''\ '

私がやろうとしていることは(と呼ばれるスクリプトでp.py)です:

import os
os.system('echo ' + 'string with spaces'.replace(' ', '\ '))

明らかにそれは私にこれをさせません。つまり、Python は 1 つではなく 2 つのバックスラッシュを追加できますが、インタラクティブ モードでのみ追加すると思いますが、ターミナルは のような特殊文字を渡すと\、それらを無視します。

したがって、前のコードの出力として、次のようになります。

local:$ string with spaces

そしてそうではない

local:$ string\ with\ spaces 

ハードコードされた文字列とその他すべてをPythonで既に試しましたが、問題はシェル文字列にあると思います。

どうすればこれを解決できますか?

代替ソリューションを見つけるのに役立ちます。私がやろうとしているのは、mvコマンドを使用して python からファイルを移動することです。このファイルの名前にはスペースが含まれています。

4

1 に答える 1

2
os.system('echo ' + 'string with spaces'.replace(' ', '\ '))

その行では'\ '、エスケープ シーケンスではないにもかかわらず、最後の文字列がスペースをエスケープしようとします。前にバックスペースがあるスペースにしたい場合は、バックスペースをエスケープするか ( '\\ ')、すべてのエスケープ シーケンスを無視する生の文字列を使用できます ( r'\ ')。

于 2012-11-25T18:56:48.047 に答える