Có cách nào để xóa một thư mục trong Windows và không mất thời gian tỷ lệ thuận với số lượng tệp trong đó không?
Vâng, vâng, định dạng phân vùng. Tôi hơi ngạc nhiên không ai đề nghị rằng trong 9 năm trước.
Nó khá triệt để, nhưng nếu bạn dự đoán làm việc này thường xuyên cho một thư mục cụ thể, thì có thể đáng để tạo một phân vùng riêng cho nó.
Nếu đó là quá triệt để, các câu trả lời khác là hy vọng duy nhất của bạn. Có một lời giải thích tốt tại sao trên serverfault . Nó dành cho hệ thống tập tin linux và XFS, nhưng logic tương tự được áp dụng ở đây. Bạn không thể cải thiện nhiều về các chức năng HĐH tích hợp.
Tuy nhiên, nếu bạn biết đường dẫn đến tất cả các tệp bạn muốn xóa, thì bạn có thể lưu vào các cuộc gọi liệt kê nội dung thư mục và xóa cuộc gọi trực tiếp, tiết kiệm một số chi phí. Vẫn tỷ lệ thuận với số lượng tập tin mặc dù.
Cá nhân, tôi thích một số từ báo cáo tiến độ để đảm bảo rằng chương trình đã không chết. Vì vậy, tôi muốn xóa công cụ thông qua python. Ví dụ: nếu tất cả các tệp nằm trong một thư mục không có thư mục con:
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
Thao tác này sẽ xóa khoảng 250 tệp / s trên SEAGATE ST3250620NS 12 tuổi của tôi. Tôi cho rằng nó sẽ nhanh hơn nhiều trên ổ đĩa của bạn.
Tuy nhiên, tại thời điểm này, nó chỉ là tối ưu hóa vi mô, vì vậy sẽ không làm được gì nhiều trừ khi bạn có hàng triệu tệp trong một thư mục. (như tôi, lol, tôi đã làm gì vậy :)