2012-03-23 71 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,*參數) – j13r 2012-03-23 21:42:15

+0

同意,我剛剛提交了錯誤。 – Parand 2012-03-23 21:52:30

回答

5

mystring.replace('%', '%%')可能適合您的需求。 %%逃脫%

+1

奇怪的是,工作原理 - 我假設轉義%會導致sftp下載無法找到文件(因爲它的名稱不再匹配遠程文件名),但顯然它工作正常。應該嘗試過,而不是假設我猜。 – Parand 2012-03-23 21:39:40