script integrar ejecutar desde consola conectar con como archivos archivo python directory django-views getcwd

ejecutar - integrar python con html



¿Cómo puedo encontrar el directorio del script con Python? (12)

Esta pregunta ya tiene una respuesta aquí:

Considere el siguiente código de Python:

import os print os.getcwd()

Utilizo os.getcwd() para obtener la ubicación del directorio del archivo de script . Cuando ejecuto el script desde la línea de comandos, me da la ruta correcta, mientras que cuando lo ejecuto desde un script ejecutado por código en una vista de Django se imprime / .

¿Cómo puedo obtener la ruta al script desde un script ejecutado por una vista Django?

ACTUALIZAR:
Resumiendo las respuestas hasta ahora - os.getcwd() y os.path.abspath() proporcionan el directorio de trabajo actual que puede o no ser el directorio donde reside el script. En la configuración de mi servidor web, __file__ solo da el nombre de archivo sin la ruta.

¿No hay ninguna manera en Python para (siempre) poder recibir la ruta en la que reside el script?


Este codigo

import os dn = os.path.dirname(os.path.realpath(__file__))

establece "dn" al nombre del directorio que contiene el script que se está ejecutando actualmente. Este codigo

fn = os.path.join(dn,"vcb.init") fp = open(fn,"r")

establece "fn" en "script_dir / vcb.init" (de manera independiente de la plataforma) y abre ese archivo para que lo lea el script que se está ejecutando actualmente.

Tenga en cuenta que "el script que se está ejecutando actualmente" es un tanto ambiguo. Si su programa completo consta de 1 script, entonces ese es el script que se está ejecutando actualmente y la solución "sys.path [0]" funciona bien. Pero si su aplicación consiste en el script A, que importa algún paquete "P" y luego llama el script "B", entonces se está ejecutando "PB". Si necesita obtener el directorio que contiene "PB", desea la solución " os.path.realpath(__file__) ".

" __file__ " solo da el nombre de la secuencia de comandos que se ejecuta actualmente (parte superior de la pila): "x.py". No da ninguna información de ruta. Es la llamada "os.path.realpath" que hace el trabajo real.


Este es un hilo bastante antiguo, pero he tenido este problema al intentar guardar archivos en el directorio actual en el que se encuentra el script al ejecutar un script de Python desde un trabajo cron. getcwd () y gran parte de la otra ruta aparece con su directorio de inicio.

para obtener una ruta absoluta al script que utilicé

directory = os.path.abspath(os.path.dirname(__file__))


Esto es lo que terminé con. Esto funciona para mí si importo mi script en el intérprete, y también si lo ejecuto como un script:

import os import sys # Returns the directory the current script (or interpreter) is running in def get_script_directory(): path = os.path.realpath(sys.argv[0]) if os.path.isdir(path): return path else: return os.path.dirname(path)


Esto funcionó para mí (y lo encontré a través de esta pregunta de )

os.path.realpath(__file__)


Prueba esto:

def get_script_path(for_file = None): path = os.path.dirname(os.path.realpath(sys.argv[0] or ''something'')) return path if not for_file else os.path.join(path, for_file)


Pruebe sys.path[0] .

Para citar de los documentos de Python:

Como se inicializó al iniciar el programa, el primer elemento de esta lista, path[0] , es el directorio que contiene el script que se usó para invocar al intérprete de Python. Si el directorio del script no está disponible (por ejemplo, si el intérprete se invoca interactivamente o si el script se lee desde la entrada estándar), la path[0] es la cadena vacía, que dirige a Python a buscar módulos en el directorio actual. Observe que el directorio de secuencias de comandos se inserta antes de las entradas insertadas como resultado de PYTHONPATH .

Fuente: https://docs.python.org/library/sys.html#sys.path


Utilice os.path.abspath('''')


Yo suelo:

import os import sys def get_script_path(): return os.path.dirname(os.path.realpath(sys.argv[0]))

Como lo señala aiham en un comentario, puede definir esta función en un módulo y usarla en diferentes scripts.


__file__ llamar a os.path.realpath en __file__ , de modo que cuando __file__ sea ​​un nombre de archivo sin la ruta, todavía obtenga la ruta dir:

import os print(os.path.dirname(os.path.realpath(__file__)))


import os exec_filepath = os.path.realpath(__file__) exec_dirpath = exec_filepath[0:len(exec_filepath)-len(os.path.basename(__file__))]


import os script_dir = os.path.dirname(os.path.realpath(__file__)) + os.sep


import os,sys # Store current working directory pwd = os.path.dirname(__file__) # Append current directory to the python path sys.path.append(pwd)