Tôi đã cố gắng tìm ra cách lấy (nhanh) số tệp trên một ổ đĩa HFS + đã cho bằng python.Làm thế nào để xác định số lượng tệp trên một ổ đĩa bằng Python?
Tôi đã chơi với os.statvfs và như vậy, nhưng không thể nhận được bất cứ điều gì (mà có vẻ hữu ích cho tôi).
Bất kỳ ý tưởng nào?
Chỉnh sửa: Hãy để tôi cụ thể hơn một chút. =]
Tôi đang viết một trình bao bọc giống như timemachine quanh rsync vì nhiều lý do khác nhau và muốn ước tính rất nhanh (không cần phải hoàn hảo) số lượng tệp trên rsync của ổ đĩa sẽ quét. Bằng cách này, tôi có thể xem tiến trình từ rsync (nếu bạn gọi nó là rsync -ax --progress
, hoặc với tùy chọn -P
) vì nó xây dựng danh sách tệp ban đầu của nó và báo cáo tỷ lệ phần trăm và/hoặc ETA cho người dùng.
Điều này hoàn toàn tách biệt với bản sao lưu thực sự, không có vấn đề gì khi theo dõi tiến độ. Nhưng với các ổ đĩa tôi đang làm việc với vài triệu tập tin, nó có nghĩa là người dùng đang xem một số lượng các tập tin đi lên mà không có giới hạn trên trong một vài phút.
Tôi đã thử chơi với os.statvfs với chính xác phương pháp được mô tả trong một trong các câu trả lời cho đến nay, nhưng kết quả không có ý nghĩa với tôi.
>>> import os
>>> os.statvfs('/').f_files - os.statvfs('/').f_ffree
64171205L
Cách cầm tay hơn mang lại cho tôi khoảng 1,1 triệu trên máy tính này, mà cũng giống như tất cả các chỉ số khác mà tôi đã nhìn thấy trên máy tính này, bao gồm rsync chạy quá trình chuẩn bị:
>>> sum(len(filenames) for path, dirnames, filenames in os.walk("/"))
1084224
Lưu ý rằng phương pháp đầu tiên là tức thời, trong khi phương pháp thứ hai khiến tôi trở lại 15 phút sau đó để cập nhật vì nó mất nhiều thời gian để chạy.
Có ai biết cách tương tự để lấy số này không, hoặc điều gì sai với cách tôi xử lý/giải thích số os.statvfs?
Đầu ra của os.statvfs [os.B_FILES] thay đổi như thế nào từ những gì bạn mong đợi? (Nếu bạn có thể dán đầu ra mẫu từ os.statvfs và giải thích * tại sao * nó không hữu ích, điều đó sẽ giúp những người không biết OS X để giúp bạn). –
@Charles: Tôi đã cập nhật câu hỏi của mình với một số chi tiết thực tế ngay bây giờ ... –
Bạn có thể sử dụng một số từ chạy rsync trước đó. Nó là nhanh chóng, di động, và cho 10 ** 6 tập tin và bất kỳ chiến lược sao lưu hợp lý nó sẽ cung cấp cho bạn 1% hoặc chính xác hơn. – jfs