2011-05-11 22 views
7

我想通過從字典中獲取路徑來打開文件。有些文件名的逗號(,)和其他此類字符,使用時給出一個「沒有這樣的文件中找到錯誤」正確使用python編碼文件路徑

例如,下面的文件路徑不會打開:FOO,%20bar.mp3

如果像逗號這樣的字符存在,那麼它應該被編碼爲:foo%2C%20bar.mp3

任何人都可以告訴我該怎麼做?

+0

爲什麼空間表示爲'%20'而不是逗號?字符串應該是'foo,bar.mp3'嗎? – neurino 2011-05-11 07:51:01

+0

逗號實際上應該是%2C。但我正在解析一個XML文件並將結果存儲在字典中。在XML文件中,大多數路徑都是編碼的,但是有一個文件具有相似的模式。空格編碼,逗號不是。奇怪的。 – bcosynot 2011-05-11 07:53:54

回答

11

您可能需要pathname2url

的Python 2.x的(docs

>>> from urllib import pathname2url 
>>> pathname2url('foo, bar.mp3') 
'foo%2C%20bar.mp3' 

的Python 3.X(docs

>>> from urllib.request import pathname2url 
>>> pathname2url('foo, bar.mp3') 
'foo%2C%20bar.mp3' 
+0

謝謝。我在2分鐘前自己找出瞭解決方案 – bcosynot 2011-05-11 07:50:48

+0

現在,該函數似乎在urllib.request(https://docs.python.org/3/library/urllib.request.html#module-urllib.request)中。 – 2017-01-16 22:42:21

2

可以使用的urllib。下面的例子可能需要,如果你使用Python 3.x的改變,但總的想法是一樣的:

import urllib 

encoded_filename = urllib.quote(filename) 
f = open(encoded_filename) 
2
from urllib import pathname2url 
pathname2url('foo,bar.mp3')