我想通過從字典中獲取路徑來打開文件。有些文件名的逗號(,)和其他此類字符,使用時給出一個「沒有這樣的文件中找到錯誤」正確使用python編碼文件路徑
例如,下面的文件路徑不會打開:FOO,%20bar.mp3
如果像逗號這樣的字符存在,那麼它應該被編碼爲:foo%2C%20bar.mp3
任何人都可以告訴我該怎麼做?
我想通過從字典中獲取路徑來打開文件。有些文件名的逗號(,)和其他此類字符,使用時給出一個「沒有這樣的文件中找到錯誤」正確使用python編碼文件路徑
例如,下面的文件路徑不會打開:FOO,%20bar.mp3
如果像逗號這樣的字符存在,那麼它應該被編碼爲:foo%2C%20bar.mp3
任何人都可以告訴我該怎麼做?
您可能需要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'
謝謝。我在2分鐘前自己找出瞭解決方案 – bcosynot 2011-05-11 07:50:48
現在,該函數似乎在urllib.request(https://docs.python.org/3/library/urllib.request.html#module-urllib.request)中。 – 2017-01-16 22:42:21
可以使用的urllib。下面的例子可能需要,如果你使用Python 3.x的改變,但總的想法是一樣的:
import urllib
encoded_filename = urllib.quote(filename)
f = open(encoded_filename)
from urllib import pathname2url
pathname2url('foo,bar.mp3')
爲什麼空間表示爲'%20'而不是逗號?字符串應該是'foo,bar.mp3'嗎? – neurino 2011-05-11 07:51:01
逗號實際上應該是%2C。但我正在解析一個XML文件並將結果存儲在字典中。在XML文件中,大多數路徑都是編碼的,但是有一個文件具有相似的模式。空格編碼,逗號不是。奇怪的。 – bcosynot 2011-05-11 07:53:54