Necesito especificar ruta completa de archivo (Python)

Agrupa todas las consultas sobre los lenguajes de programacion como C, C++, Python, Java ...

Necesito especificar ruta completa de archivo (Python)

Notapor Nato » Lun May 05, 2008 7:37 pm

Estoy trabajando con Python, ultima versión estable, en Ubuntu, también ultima versión estable.

Al intentar correr CUALQUIER código que llame a un elemento externo me canta un error por no encontrarlo y debo especificar exactamente la carpeta en la que se encuentra el archivo, sea lo que sea.

Alguien sabe que puede estar pasando?
Imagen
Avatar de Usuario
Nato
 
Mensajes: 26
Registrado: Sab Jul 21, 2007 11:11 am
Ubicación: Las Palmas, España

Notapor hugoruscitti » Lun May 05, 2008 8:51 pm

El siguiente código tal vez te ayude a ver donde puede estar
el problema:

Código: Seleccionar todo
import os

print "El directorio actual es:", os.path.curdir
print " (y su ruta absoluta es):", os.path.abspath(os.path.curdir)
print ""
print "El script actual es:", __file__
print " (y su ruta es):", os.path.abspath(__file__)


¿estás ejecutando el script desde el mismo directorio en donde
se encuentra?. Intenta publicar un ejemplo que falle junto con la salida en pantalla, así puedo ver donde falla exactamente.

Saludos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor Dokan » Mar May 06, 2008 9:59 am

Tienes que añadir la carpeta donde Python tiene que buscar recursos a una lista que se guarda no recuerdo donde.
Para que te hagas una idea yo lo utilizaba así:
Código: Seleccionar todo
import sys
sys.path.append("/home/kike/python/quiniela")
from quinielav004 import *
from reduccion3 import *
pre=premios(7,0)
ap= apMetDirecto(7,0)
lim=limite(len(ap),pre)
reduccion(pre,lim,ap)

Donde quinielav004 y reduccion3 estan en la carpeta mencionada.
Espero haberte ayudado, y te recomiendo que leas Dive into Python, aunque es un poco avanzado se pueden extraer cosas muy valiosas para empezar.
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Notapor Nato » Mar May 13, 2008 7:02 pm

Bueno al ejecutar el código que me pasaste sale esto

Código: Seleccionar todo
El directorio actual es: .
(y su ruta absoluta es): /home/miguel

El script actual es: /home/miguel/Proyectos/codigo.py
(y su ruta es): /home/miguel/Proyectos/codigo.py


estoy en ubuntu 8.04, cuando estaba en windows no me pasaba esto y nunca he usado lo que mencionas Dokan, es más, jamás había visto algo parecido a eso.
Imagen
Avatar de Usuario
Nato
 
Mensajes: 26
Registrado: Sab Jul 21, 2007 11:11 am
Ubicación: Las Palmas, España

Notapor hugoruscitti » Mar May 13, 2008 10:07 pm

Bueno, ocurre que al parecer estás ejecutando el script desde
tu directorio de usuario.

Por eso, cuando ejecutas el script con rutas relativas, por ejemplo
"imagenes/algo.png", python buscará encontrar el archivo en
"/home/miguel/imagenes/algo.png" en lugar de
"/home/miguel/Proyectos/imagenes/algo.png" donde seguramente
están las imágenes.

Una solución es correr el programa en el mismo directorio en
donde se encuentra, pero desde una consola y no desde el
administrador de archivos.

Otra solución es hacer que el programa calcule las rutas a los
archivos a partir de la posición del script ejecutado. Por ejemplo:

Código: Seleccionar todo
import os

this_dir = os.path.abspath(os.path.dirname(__file__))
image_path = os.path.join(this_dir, 'imagenes/algo.png')


Este código obtiene la ruta absoluta del archivo
"imagenes/algo.png", por lo tanto la variable tendrá el
mismo valor independientemente de donde te encuentres
al momento de ejecutar el script.

Muchos juegos en python usan algo similar para cargar
recursos.
Avatar de Usuario
hugoruscitti
Site Admin
 
Mensajes: 1242
Registrado: Dom Jul 30, 2006 3:57 am
Ubicación: Buenos Aires, Argentina

Notapor Dokan » Mié May 14, 2008 3:06 pm

Perdona por haber sido poco claro en mi respuesta, pero tampoco sabía muy bien cual era tu duda.
Lo que intentaba explicar era que debías especificar donde se encontraban esos "elementos externos" a los que llamaba tu código. Supuse que intentabas importar algo mediante el comando «import» y no te lo reconocía. Por eso te comenté que echaras un vistazo a «Dive into python» (Inmersión en python) puesto que explica mejor que yo «la ruta de búsqueda de import».
Avatar de Usuario
Dokan
 
Mensajes: 143
Registrado: Lun Dic 03, 2007 10:40 pm

Notapor Nato » Mié May 14, 2008 4:53 pm

No hace falta que te disculpes Dokan, fallo mio, voy a hacer lo que me dice Hugo, como yo lo hacia solo funcionaria en mi PC, no conozco aun muy bien los comandos, tampoco es que me haya puesto a documentarme la verdad, pero bueno, ya está solucionado, la próxima vez intentare buscar en las referencias de los comandos.
Imagen
Avatar de Usuario
Nato
 
Mensajes: 26
Registrado: Sab Jul 21, 2007 11:11 am
Ubicación: Las Palmas, España


Volver a Sobre lenguajes de programación

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron