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.

tkinter os.path.isfile, os.path.exists no funcionan y bloquean la aplicación.

Acabo de hacer un pequeño programa para crear algunos gráficos con tkinter en python.
Y estoy tratando de hacer que la aplicación cree archivos png sin superponerse al anterior.
Entonces, si existe, renombrarlo como ~ (1).png, así.

Pero cuando ejecuto os.path.isfile o os.path.exists, la aplicación se congela. Como, los relojes de arena interminables que giran y dicen que no responde, ya sabes.

Entonces, esta es la función que enlacé con el botón.

def get_information_S ():
global nation_list, checked_list, output, year_menu, auto_flag, df
año = year_menu.get()
checked_list.sort()
naciones = []
if auto_flag == 0:
for n in range (len (nation_list)):
naciones.append (nation_list [n] [0] .get ())

más:
    pasar

if len (year) == 0:
    output_log (" Seleccione un año. \ N & quot;)
elif len (checked_list) == 0:
    output_log (" seleccione el código HS. \ N & quot;)
más:
    output_log (" \ n \ n Año de análisis: " + str (año) + " \ n Producto analizado: " + str (checked_list) + " \ n País analizado: " + str (naciones) + " \ n El análisis se realizó. . \ n & quot;)

    para x en el rango (len (checked_list)):
        os.makedirs (" resultado & quot ;, exist_ok = True)
        os.makedirs (" resultado \\ único & quot ;, exist_ok = True)
        os.makedirs (" result \\ único \\ hs_ & quot; + str (checked_list [x]), exist_ok = Verdadero)

        df_test = df [df .hs6 == int (checked_list [x])]
        df_test = df_test [df_test .year == int (year)]

        file_loc = " resultado \\ único \\ hs_ & quot; + str (checked_list [x]) + " \\ hs_ & quot; + str (checked_list [x]) + " _ & quot; + str (año) + '. png & # 39;'

        f = -1
        mientras sea cierto :
            f + = 1
            si os.path.isfile (file_loc) == Verdadero:
                si f == 0:
                    file_loc = file_loc.replace (& # 39;_.png & # 39 ;, & # 39;_ (' +str(f) + & # 39;). png & # 39;)
                más:
                    file_loc = file_loc.replace (& # 39; (& # 39; + str (f-1) + & # 39;) & # 39;, & # 39; (& # 39; + str (f) + & # 39;) & # 39; )
                continuar
            más:
                descansar

        plain_graph (df_test, file_loc, checked_list [x], naciones)

Bueno, es la primera vez que trato con GUI.
¿Hay alguna forma de usar os.path.isfile o os.path.exists? ¿O alguna solución alternativa?
¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás teniendo un problema con tu programa que se congela cuando usas os.path.isfile o os.path.exists. Es posible que el problema esté relacionado con la forma en que estás usando estas funciones. Es posible que no las estés usando correctamente, o que las estés usando de una manera que está haciendo que el programa se congele.

    Una posible solución es usar un enfoque diferente para verificar si el archivo existe. Por ejemplo, podrías usar el módulo glob para buscar archivos con un cierto patrón de nombre. Esto te permitiría verificar si un archivo existe sin tener que usar os.path.isfile o os.path.exists.

    Otra posible solución es usar un enfoque diferente para manejar la nomenclatura del archivo. Por ejemplo, podrías usar un identificador único para cada archivo, como una marca de tiempo o un número aleatorio, para asegurarte de que cada archivo tenga un nombre único. Esto te permitiría evitar la necesidad de verificar si un archivo existe antes de crearlo.

    Finalmente, también podrías considerar usar una biblioteca diferente para crear los gráficos. Por ejemplo, podrías usar la biblioteca matplotlib, que tiene funciones incorporadas para crear gráficos y guardarlos en archivos. Esto te permitiría evitar la necesidad de usar os.path.isfile o os.path.exists por completo.

    ¡Espero que esto te ayude!

Comments are closed.