Czy istnieje sposób na usunięcie folderu w systemie Windows, a czas nie jest proporcjonalny do liczby plików w nim zawartych?
Tak, sformatuj partycję. Jestem trochę zaskoczony, że nikt nie sugerował tego w ciągu ostatnich 9 lat.
Jest to dość radykalne, ale jeśli spodziewasz się, że będziesz to robić często dla określonego folderu, może być warto utworzyć dla niego osobną partycję.
Jeśli to zbyt radykalne, pozostałe odpowiedzi są twoją jedyną nadzieją. Istnieje dobre wytłumaczenie przyczyny błędu serwera . Dotyczy to systemów plików Linux i XFS, ale tutaj obowiązuje ta sama logika. Nie można wiele poprawić we wbudowanych funkcjach systemu operacyjnego.
Jeśli jednak znasz ścieżki do wszystkich plików, które chcesz usunąć, możesz zapisywać na połączeniach, które zawierają zawartość katalogu i usuwać połączenia bezpośrednio, oszczędzając trochę narzutu. Nadal jednak proporcjonalny do liczby plików.
Osobiście lubię niektóre z raportów z postępu, aby upewnić się, że program nie umrze. Więc lubię usuwać rzeczy przez python. Na przykład, jeśli wszystkie pliki znajdują się w jednym katalogu bez podkatalogów:
import tqdm
import sys
import os
location = sys.argv[1]
directory = os.fsencode(location)
with os.scandir(directory) as it:
for dir_entry in tqdm.tqdm(it):
try:
os.remove(dir_entry.path)
except OSError:
pass # was not a file
Spowoduje to usunięcie około 250 plików / s na moim 12-letnim SEAGATE ST3250620NS. Zakładam, że na twoim dysku będzie znacznie szybciej.
Jednak w tym momencie jest to tylko mikrooptymalizacja, więc nie zrobi wiele, jeśli nie będziesz mieć milionów plików w jednym katalogu. (jak ja, lol, co ja zrobiłem D :)