Si está ejecutando una secuencia de comandos python congelada (congelada mediante py2exe) desde un directorio y la unidad es diferente de la secuencia de comandos presente, ¿cuál es la mejor manera de determinar la ruta de la ejecutar el guion?Cómo obtener la ruta de ejecución de la secuencia de comandos congelada
pocas soluciones He tratado
inspect.getfile(inspect.currentframe())
Problema: no devuelve la ruta completa. Solo devuelve el nombre del script.
os.path.abspath(__file__)
Problema: No funciona en Windows
os.path.dirname(sys.argv[0])
Problema: Devuelve una cadena vacía.
os.path.abspath(inspect.getsourcefile(way3))
no funcionará si la unidad es diferente de la PWD
os.path.dirname(os.path.realpath(sys.argv[0]))
no funcionará si la unidad es diferente de la PWD
que aquí hay una no mínimo - ejemplo de trabajo
D:\>path
PATH=c:\Python27\;c:\Users\abhibhat\Desktop\ToBeRemoved\spam\dist\;c:\gnuwin32\bin
D:\>cat c:\Users\abhibhat\Desktop\ToBeRemoved\spam\eggs.py
import os, inspect, sys
def way1():
return os.path.dirname(sys.argv[0])
def way2():
return inspect.getfile(inspect.currentframe())
def way3():
return os.path.dirname(os.path.realpath(sys.argv[0]))
def way4():
try:
return os.path.abspath(__file__)
except NameError:
return "Not Found"
def way5():
return os.path.abspath(inspect.getsourcefile(way3))
if __name__ == '__main__':
print "Path to this script is",way1()
print "Path to this script is",way2()
print "Path to this script is",way3()
print "Path to this script is",way4()
print "Path to this script is",way5()
D:\>eggs
Path to this script is
Path to this script is eggs.py
Path to this script is D:\
Path to this script is Not Found
preguntas relacionadas:
- How to know the path of the running script in Python?
- How do I get the path and name of the file that is currently executing?
- python, path of script [closed]
Nota
@ solución de Fenikso funcionarán si el guión reside en la misma unidad en la que se está ejecutando, pero cuando está en una unidad diferente, no va a funcionar
Sí, esto funciona también con py2exe. –
@Fenikso: Esto funciona perfectamente. Antes de publicar esta pregunta, he visto pocas referencias al mismo problema en SO, pero ninguna de las respuestas es correcta per se '. – Abhijit