es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Como traductor de español, me complace ayudarte a traducir los documentos de TI. Sin embargo, necesitaré que me proporciones el archivo de script de nombres personalizados para poder usar las variables específicas que deseas incluir en la traducción. Una vez que me proporciones ese archivo, estaré encantado de ayudarte con la traducción.

Actualmente estoy construyendo un programa amigable para el usuario en Python. Actualmente, el usuario puede modificar los valores de entrada proporcionados en un script de inicialización que podemos llamar init.py. En este momento, el usuario puede abrir en Spyder el archivo main.py y ejecutar todo el proceso o simplemente escribir el comando clásico:

python3 main.py

El archivo main.py importa todas las variables necesarias de init.py y se ejecuta normalmente. Lo que me gustaría hacer ahora es agregar una característica que permita al usuario cambiar el nombre del archivo init.py. Por ejemplo, poder construir initcustom.py. Y usar el siguiente comando:

python3 main.py initcustom.py

¿Cómo puedo importar variables en main.py desde un script que puede cambiar de nombre (que debería ser proporcionado por el usuario en la línea de comandos)?

Y en el caso en que no se especifique nada, mantendremos el clásico init.py.

¿Qué cambios implicará esta característica en el caso de que alguien simplemente quiera hacer F5 usando Spyder sin especificar nombres de entrada?

Gracias de antemano por su ayuda.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para importar variables desde un script cuyo nombre ha sido especificado por el usuario en la línea de comandos, puedes usar el módulo sys en Python. Aquí tienes un ejemplo de fragmento de código que puedes utilizar en tu archivo main.py para importar variables desde el script de inicialización especificado:

    import sys
    
    # Nombre predeterminado del script de inicialización
    init_script = 'init.py'
    
    # Comprobar si se ha especificado un nombre de script de inicialización en la línea de comandos
    if len(sys.argv) > 1:
        init_script = sys.argv[1]
    
    # Importar variables desde el script de inicialización
    try:
        variables = __import__(init_script.split('.')[0])
    except ImportError:
        raise ImportError('No se pudieron importar las variables desde {}'.format(init_script))
    
    # Acceder a las variables según sea necesario
    print(variables.my_variable)
    

    En este fragmento de código, la lista sys.argv contiene los argumentos de línea de comandos especificados por el usuario. El primer elemento de esta lista siempre es el nombre del script que se está ejecutando (main.py en este caso), por lo que comprobamos si hay un segundo elemento en la lista (if len(sys.argv) > 1). Si lo hay, asumimos que el usuario ha especificado un nombre de script de inicialización en la línea de comandos y utilizamos ese nombre en lugar del nombre predeterminado init.py.

    La función __import__ se utiliza para importar el módulo especificado (después de eliminar la extensión .py). Luego puedes acceder a las variables definidas en este módulo según sea necesario.

    Si el usuario simplemente ejecuta el programa en Spyder utilizando la tecla F5, se utilizará el script de inicialización predeterminado (init.py). Sin embargo, puedes modificar el código anterior para solicitar al usuario que ingrese un nombre de script de inicialización si no se especifica uno en la línea de comandos.

Comments are closed.