7

私はpythonとファブリックAPIが初めてです。sudo 機能を使用して、特定のテキスト行が見つかった後にテキストを挿入する bash ターミナルで sed コマンドを実行しようとしています。変更中のファイルに挿入しようとしているテキストの一部にバックスラッシュが含まれており、ファブリックによって無視されるか、構文エラーが発生するようです。「shell=true」および「shell=false」オプションを試しましたが、まだうまくいきません。バックスラッシュをエスケープするにはどうすればよいですか? 「shell=true」は $ と " のみをエスケープするようです。以下の私のコード。

sudo (' sed -i "/sometext/a textwith\backslash" /home/me/somefile.txt',shell=True)

4

2 に答える 2

7

文字列の前に。を付けてみてくださいr。これは、文字列が生の文字列として解釈されることを意味します。

sudo (r' sed -i "/sometext/a textwith\backslash" /home/me/somefile.txt',shell=True)

文字列リテラルとPythonでの使用法の詳細については、ここを参照してください。

于 2012-11-12T03:20:41.557 に答える
4

OK、最終的にこれを解決しました。RocketDonkey は正しかった。「r」を前に付ける必要がありましたが、「shell=False」を設定する必要もありました。これにより、これまで bash ターミナルで直接機能していたものが、fabric.api から呼び出されたときに機能するようになりました。

ありがとうロケットドンキー!!

于 2012-11-12T05:00:32.393 に答える