2011-05-11 8 views
7

Estoy tratando de abrir archivos obteniendo la ruta de un diccionario. Algunos de los nombres de archivo tienen comas (,) y otros tales caracteres que dan cuando se utiliza un "no existe el fichero se encuentra el error"Codificar la ruta del archivo correctamente utilizando Python

Por ejemplo la siguiente ruta del archivo no se abre: foo,% 20bar.mp3

Si existen caracteres como comas, debe codificarse como: foo% 2C% 20bar.mp3

¿Alguien me puede decir cómo hacerlo?

+0

¿por qué es el espacio representado como '20'% y no comas? ¿Se supone que la cadena es 'foo, bar.mp3'? – neurino

+0

La coma en realidad debería haber sido% 2C. Pero estoy analizando un archivo XML y almacenando los resultados en un diccionario. En el archivo XML, la mayoría de las rutas están codificadas, pero había un archivo con un patrón similar. Los espacios estaban codificados, las comas no. Extraño. – bcosynot

Respuesta

11

Es posible que necesite pathname2url

Python 2.x (docs)

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

3.x Python (docs)

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

gracias. Acabo de descubrir la solución yo mismo hace 2 minutos – bcosynot

+0

La función parece estar en urllib.request (https://docs.python.org/3/library/urllib.request.html#module-urllib.request) ahora. –

2

Puede utilizar urllib. puede ser que necesite el siguiente ejemplo que cambiarse si usa Python 3.x, pero la idea general es la misma:

import urllib 

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