Python - Seleccionar archivos con caracteres especiales

   
Vista:

Seleccionar archivos con caracteres especiales

Publicado por luclinux (26 intervenciones) el 20/02/2014 08:49:51
Buenos dias, quería hacer una consulta, ya que no encuentro la solución por la red.

En el programa que tengo en Python, en un momento determinado, selecciono un archivo (a través de un gtk.filechooserdialog) para guardarlo en una base de datos. El problema es que si el nombre del archivo tiene algún caracter especial (como una tilde), el archivo no se adjunta, porque no encuentra la ruta. Esto sólo pasa en Windows, en Linux va sin problema. Al inicio del código ya he codificado el utf-8 (#-*- coding: utf-8 -*-) El código para adjuntar es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def btPDFClick(self, widget):
		informeConsultado = self.lbIdInforme.get_text()
		respt = self.selectorArchivos.run()
		self.selectorArchivos.hide()
		if respt == -5:
			pdfSeleccionado = open(self.selectorArchivos.get_filename(), 'rb') #selectorArchivos es el gtk.filechooserdialog
			pdfBin = pdfSeleccionado.read()
			pdfSeleccionado.close()
 
			queryInsertarPDF = "UPDATE INFORMES SET PDF = %s WHERE IdInforme =\'" + informeConsultado + "'"
			c = conexion.db
			cursor = c.cursor()
 
			try:
				cursor.execute(queryInsertarPDF, (pdfBin, ))
				c.commit()
				self.msgbox.show()
				self.lbMensaje.set_text("PDF adjuntado con exito.")
				self.btAceptarMsgBox.set_label("Aceptar")
			except Exception, e:
				raise e
				c.rollback
 
			 cursor.close()
			 self.selectorArchivos.hide()

Gracias de antemano y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Seleccionar archivos con caracteres especiales(SOLUCIONADO)

Publicado por luclinux (26 intervenciones) el 20/02/2014 12:37:56
Al final he podido solucionarlo. Por lo visto, sólo era un tema de poner la ruta en Unicode. El código quedaría así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
def btAdjuntarPAIClick(self, widget):
		informeConsultado = self.lbIdInforme.get_text()
		respt = self.selectorArchivos.run()
		self.selectorArchivos.hide()
		if respt == -5:
                        ruta = unicode(self.selectorArchivos.get_filename(), "utf-8") #pasamos la ruta a unicode
                        pdfSeleccionado = open(ruta, 'rb')
                      	pdfBin = pdfSeleccionado.read()
			pdfSeleccionado.close()
 
			queryInsertarPAI = "UPDATE INFORMES SET PAI = %s WHERE IdInforme =\'" + informeConsultado + "'"
			c = conexion.db
			cursor = c.cursor()
 
			try:
				cursor.execute(queryInsertarPAI, (pdfBin, ))
				c.commit()
				self.msgbox.show()
				self.lbMensaje.set_text("PAI adjuntado con exito.")
				self.btAceptarMsgBox.set_label("Aceptar")
			except Exception, e:
				raise e
				c.rollback
 
			cursor.close()
			self.selectorArchivos.hide()

Gracias nuevamente y hasta la próxima.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Seleccionar archivos con caracteres especiales(SOLUCIONADO)

Publicado por xve (1229 intervenciones) el 20/02/2014 16:22:11
Gracias por compartirlo luclinux!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar