#python #url-encoding
#python #url-кодировка
Вопрос:
Я пытаюсь открыть файлы, получив путь из словаря. Некоторые имена файлов содержат запятые (,) и другие подобные символы, которые при использовании выдают ошибку «такой файл не найден»
Например, следующий путь к файлу не откроется: foo, bar.mp3
Если существуют символы, подобные запятым, то они должны быть закодированы как : foo, bar.mp3
Кто-нибудь может сказать мне, как это сделать?
Комментарии:
1. почему пробел представлен как
, а не как запятая? Должна ли строка быть
foo, bar.mp3
?2. Запятая на самом деле должна была быть ,. Но я анализирую XML-файл и сохраняю результаты в словаре. В XML-файле большинство путей закодированы, но был один файл с похожим шаблоном. Пробелы были закодированы, запятые — нет. Странно.
Ответ №1:
Вам может понадобиться pathname2url
Python 2.x (docs)
>>> from urllib import pathname2url
>>> pathname2url('foo, bar.mp3')
'foo, bar.mp3'
Python 3.x (docs)
>>> from urllib.request import pathname2url
>>> pathname2url('foo, bar.mp3')
'foo, bar.mp3'
Комментарии:
1. Функция, похоже, находится в urllib.request ( docs.python.org/3/library /… ) теперь.
Ответ №2:
from urllib import pathname2url
pathname2url('foo,bar.mp3')
Ответ №3:
Вы можете использовать urllib. Следующий пример, возможно, потребуется изменить, если вы используете Python 3.x, но общая идея та же:
import urllib
encoded_filename = urllib.quote(filename)
f = open(encoded_filename)