Advertisement
MizunoBrasil

Lista Arquivos da Pasta

Nov 28th, 2024
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.89 KB | None | 0 0
  1. import os
  2. import threading
  3. import tkinter as tk
  4. from tkinter import scrolledtext
  5. from datetime import datetime
  6.  
  7. def generate_unique_filename():
  8.     """Gera um nome único para o arquivo .txt com base na data e hora."""
  9.     timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
  10.     return f"file_list_{timestamp}.txt"
  11.  
  12. def get_file_size(file):
  13.     """Obtém o tamanho do arquivo em bytes."""
  14.     try:
  15.         return os.path.getsize(file)
  16.     except OSError:
  17.         return 0
  18.  
  19. def format_size(bytes_size):
  20.     """Formata o tamanho do arquivo em uma string legível."""
  21.     for unit in ['B', 'KB', 'MB', 'GB', 'TB']:
  22.         if bytes_size < 1024.0:
  23.             return f"{bytes_size:.2f} {unit}"
  24.         bytes_size /= 1024.0
  25.  
  26. def list_files():
  27.     """Função para listar os arquivos da pasta atual, incluindo tamanhos, e salvar em um arquivo."""
  28.     try:
  29.         files = os.listdir(".")
  30.         text_area.delete(1.0, tk.END)  # Limpar a área de texto
  31.         total_size = 0  # Para calcular o tamanho total dos arquivos
  32.         file_list_with_sizes = []
  33.  
  34.         # Montar a lista com nomes e tamanhos
  35.         for file in files:
  36.             if os.path.isfile(file):
  37.                 size = get_file_size(file)
  38.                 total_size += size
  39.                 file_list_with_sizes.append(f"{file} - {format_size(size)}")
  40.        
  41.         # Mostrar arquivos na TextArea
  42.         for line in file_list_with_sizes:
  43.             text_area.insert(tk.END, line + "\n")
  44.        
  45.         # Adicionar tamanho total ao final
  46.         total_size_formatted = format_size(total_size)
  47.         total_line = f"\nTamanho total: {total_size_formatted}"
  48.         text_area.insert(tk.END, total_line)
  49.  
  50.         # Salvar lista em um arquivo .txt
  51.         filename = generate_unique_filename()
  52.         with open(filename, "w", encoding="utf-8") as f:
  53.             f.write("\n".join(file_list_with_sizes))
  54.             f.write(total_line)
  55.     except Exception as e:
  56.         text_area.insert(tk.END, f"\nErro: {str(e)}")
  57.  
  58. def on_button_click():
  59.     """Função que inicia a thread para listar os arquivos."""
  60.     threading.Thread(target=list_files, daemon=True).start()
  61.  
  62. # Configuração da Janela
  63. root = tk.Tk()
  64. root.title("Listador de Arquivos com Tamanhos")
  65.  
  66. # Centralizar janela
  67. window_width = 800
  68. window_height = 600
  69. screen_width = root.winfo_screenwidth()
  70. screen_height = root.winfo_screenheight()
  71. x_cordinate = int((screen_width / 2) - (window_width / 2))
  72. y_cordinate = int((screen_height / 2) - (window_height / 2))
  73. root.geometry(f"{window_width}x{window_height}+{x_cordinate}+{y_cordinate}")
  74.  
  75. # Área de Texto com Scroll
  76. text_area = scrolledtext.ScrolledText(root, wrap=tk.WORD, width=80, height=30)
  77. text_area.pack(padx=10, pady=10, fill=tk.BOTH, expand=True)
  78.  
  79. # Botão
  80. button = tk.Button(root, text="Listar Arquivos", command=on_button_click)
  81. button.pack(pady=10)
  82.  
  83. # Executar o Programa
  84. root.mainloop()
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement