Creé un archivo .exe de mi proyecto .py. Y cuando intento guardar y generar el archivo .csv en el escritorio, aparece el mensaje "permiso de error 13 denegado", porque no tengo privilegios de administrador. En cambio, necesito guardar un archivo en C:/Users/Public para que funcione. Entonces, ¿cómo hago una ventana emergente con este mensaje usando Tkinter, cada vez que aparece el 'error 13'? El error se muestra solo en cmd.

## Write output to csv file
def save_file():
    path_to_output_file = fd.asksaveasfilename()
    if not path_to_output_file:
        return
    file_count = 1
    for rows in range(len(df)):
        if rows % 500 == 0:
            df[rows:rows+500].to_csv(path_to_output_file + str(file_count) + '.csv', index=False, header=True, quoting=csv.QUOTE_NONNUMERIC)
            file_count += 1
0
Melleo 10 ene. 2022 a las 14:52
¿Qué línea está causando el error? ¿Cuál es el mensaje de error completo? Debería poder envolver la línea ofensiva en try: <line with error> except PermissionError: <code to display popup>.
 – 
Axe319
10 ene. 2022 a las 15:25
Excepción en Tkinter callback Traceback (última llamada más reciente): Archivo "tkinter_init_.py", línea 1892, en llamada Archivo "Directory Master.py", línea 136, en save_file Archivo "pandas\core\generic.py", línea 3466, en to_csv Archivo "pandas\io\formats\format.py", línea 1105, en to_csv Archivo "pandas\io\formats\csvs.py", línea 237, en el archivo de guardado "pandas\io\common.py", línea 702, en get_handle PermissionError: [Errno 13] Permiso denegado: 'C:/Users/Melleo/Desktop/dm1.csv'
 – 
Melleo
10 ene. 2022 a las 15:37
Es la línea 136, que es: df[rows:rows+500].to_csv(path_to_output_file + str(file_count) + '.csv', index=False, header=True, quoting=csv.QUOTE_NONNUMERIC)
 – 
Melleo
10 ene. 2022 a las 15:45

2 respuestas

La mejor respuesta

Si ya recibió el mensaje de error, puede usar la función tkinter.messagebox.showinfo para crear una ventana emergente y mostrar el mensaje de error. Puede encontrar los documentos aquí: https://docs.python.org/3/library/tkinter.messagebox. html

0
Evan 10 ene. 2022 a las 15:42

¡Gracias! ¡Funcionó!

try:
    df[rows:rows+500].to_csv(path_to_output_file + str(file_count) + '.csv', index=False, header=True, quoting=csv.QUOTE_NONNUMERIC)
except PermissionError:
    messagebox.showinfo('Can\'t save a file', f'File can\'t be saved to {path_to_output_file} as you don\'t have admin privileges.\nYou need to save a file to \'C:/Users/Public\'')

introduzca la descripción de la imagen aquí

0
Melleo 10 ene. 2022 a las 16:05