2012-03-23 10 views
3

Pythonの%文字列置換を引き起こさないような文字列をマークする方法はありますか?Python:文字列の%s置換を防止する

特に、私はPython sftpモジュールを使用して%という名前のファイルをダウンロードしようとしています。 SFTPモジュールは、ロギングモジュールを使用してファイルの名前をログに記録しようとします。

self.logger.log(level, msg, *args) 

loggingは理由%記号の書式設定文字列文句:

だから、
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/logging/__init__.py", line 328, in getMessage 
    msg = msg % self.args 
TypeError: not enough arguments for format string 

:私は制御されませんので、ファイル名もsftpモジュールでも、文字列置換に参加していないとファイル名をマークできますか?

+2

あなたはsftpのバグとして報告するべきです:self.logger.log(レベル、 "%s"%msg、* args)を適切にエスケープする必要があります – j13r

+0

合意しました。 – Parand

答えて

5

mystring.replace('%', '%%')はあなたのニーズに合っているかもしれません。 %%%をエスケープします。

+1

奇妙なことにはうまくいく - 私は%をエスケープするとsftpのダウンロードがファイルを見つけられなくなる(その名前はもはやリモートファイル名と一致しないので)と思われたが、明らかにうまく動作する。私が推測するのではなく、それを試してみてください。 – Parand