Python ile bir sürücüdeki dosya sayısı nasıl belirlenir?
CN (简体中文)DE (Deutsch)ES (Español)Hi (हिन्दी)JA (日本語)PL (Polski)RU (Русский)Vi (Tiếng Việt)
Belirli bir HFS + sürücüsündeki python ile dosya sayısını nasıl alacağınızı (hızlıca) anlamaya çalışıyorum.
Ben os.statvfs ve benzeri ile oynuyordum, ama hiçbir şey alamıyorum (bana yararlı görünüyor).
Herhangi bir fikrin var mı?
Düzelt: Biraz daha belirgin olalım. =]
Çeşitli nedenlerden dolayı rsync etrafında bir timemachine benzeri bir sarmalayıcı yazıyorum ve rsync'nin taranacağı dosya sayısının çok hızlı bir tahminini (mükemmel olması gerekmez) istiyorum. Bu şekilde, rsync'den (rsync -ax --progress veya -P seçeneği ile çağırırsanız) ilerlemesini ilk dosya listesini oluşturduğundan ve bir yüzdeyi ve/veya ETA'yı kullanıcıya geri bildirdiğinden izleyebilirim.
Bu, asıl yedeklemeden tamamen ayrıdır; Ancak birkaç milyon dosya üzerinde çalıştığım sürücülerle, kullanıcının birkaç dakika boyunca hiçbir üst sınırı olmayan dosya sayısının bir sayacını izlediği anlamına geliyor.
os.statvfs ile tam olarak şu ana kadar verilen yanıtlardan birinde anlatılan yöntemi kullanarak oynamaya çalıştım, ancak sonuçlar bana mantıklı gelmiyor.
daha taşınabilir yolu rsync çalışan hazırlıklarını dahil bu makinede hâlâ her diğer gösterge, aynı bu makinede, beni yaklaşık 1,1 milyon verir:
Not o İlk yöntem anlık, ikincisi ise 15 dakika sonra geri dönmemi sağladı.
Bu numarayı almak için benzer bir yoldan haberiniz var mı, yoksa os.statvfs numaralarını nasıl ele aldığımı/yorumladığım konusunda yanlış olan nedir?
Oluştur 22 şub. 092009-02-22 03:12:46 Mike Boers
Os.statvfs [os.B_FILES] çıktısı beklediğinizden nasıl değişir? (Eğer os.statvfs'den örnek çıktılarını yapıştırabilir ve * neden * yardımcı olmadığını açıklarsanız, bu size yardım etmek için OS X'i bilmeyen kişilere yardımcı olacaktır). – Charles Duffy 22 şub. 092009-02-22 03:54:25
@Charles: Sorumu şu anda bazı gerçek detaylarla güncelledim ... – Mike Boers 24 şub. 092009-02-24 17:08:29
Bir önceki rsync çalışmasından bir numarayı kullanabilirsiniz. Bu hızlı, taşınabilir ve 10 ** 6 dosya ve herhangi bir makul yedekleme stratejisi için size% 1 veya daha iyi hassasiyet verecektir. – jfs 24 şub. 092009-02-24 18:25:49
@ J.F. Oldukça doğru! Bunu gerçek bir cevap olarak göndermelisin, böylece ona bir +1 verebilirim. – Mike Boers 24 şub. 092009-02-24 21:17:32
Bir önceki rsync vadede bir numarayı kullanabilirsiniz. Hızlı, taşınabilir ve 10**6 dosyaları ve size 1% veya daha iyi hassasiyet verecek makul bir yedekleme stratejisi.
Oluştur 25 şub. 092009-02-25 11:20:23 jfs
@Sebastian: Bunu joeforker'ın yaptığı yorumdan önce gönderdiniz, böylece onay işaretini benden alıyorsunuz. – Mike Boers 26 şub. 092009-02-26 18:27:55
Amacınız için doğru yanıt, bir kez ilerleme çubuğu olmadan yaşamak, rsync sayısı ile birlikte depolamak ve her bir yedek yedek için son kez aynı sayıda dosya olduğunu varsayalım.
Ben inanmadım, ama bu Linux üzerinde iş gibi görünüyor:
Bu dosya blokları eksi ücretsiz dosya blokların toplam sayısını hesaplar. Başka bir dizinde işaret etseniz bile tüm dosya sistemi için sonuçları gösterir gibi görünüyor. os.statvfs yalnızca Unix'te uygulanır.
Tamam, itiraf etmeliyim ki, hızlı yönteme hayret etmeden önce 'yavaş, doğru' bir şekilde sonuçlanmadı. Sadece birkaç dezavantajı: .f_files'un da dizin sayılacağından şüpheleniyorum ve sonuç muhtemelen tamamen yanlıştır. Dosyaları bir kez yavaşça saymak ve sonucu 'hızlı' şekilde ayarlamak işe yarayabilir mi?
taşınabilir bir şekilde:
os.walk verilen yol başlayarak dosya sisteminde, her bir dizin için bir 3-tuple (dizinyolu, dirnames, dosya) döndürür.Bu muhtemelen "/" için uzun zaman alacaktır, ancak bunu zaten biliyordunuz.
Kabul edelim, kimse bu monoton ve abes bir istatistik bilir ya da gerçekten var kaç dosya umurunda. Bu kodla programa özelliği bu serin 'dosyaları sayısını' ekleyebilirsiniz:
bu yöntemlerden herhangi sizin için çalışan varsa bize bildirin.
da How do I prevent Python's os.walk from walking across mount points?
Oluştur 22 şub. 092009-02-22 03:37:47 joeforker
Tam olarak önümde denediğim şey buydu ama sonuçta ortaya çıkan sayı bana mantıklı gelmiyor. Daha spesifik olmak için yukarıdaki soruyu düzenledim. – Mike Boers 24 şub. 092009-02-24 17:09:01
haha, rastgele yorumdaki mizahı seviyorum. – Matt Joiner 31 eki. 092009-10-31 01:56:43
Edit bakınız: Spotlight her dosyayı takip etmez, onun meta yeterli olmayacak şekilde. dizin ağacında geçiş bir seçenek ise
Oluştur 22 şub. 092009-02-22 03:42:55 Thomas L Holaday
Oldukça eminim ki spot ışık tüm cildinizde yürümez. Ben/Uygulamalar ve/Kullanıcılar (ve// Kütüphane gibi şeyler görmezden) yapışır düşünüyorum. – John Fouhy 23 şub. 092009-02-23 01:09:29
(doğrudan sürücünün sorgulama daha yavaş olacaktır):
Oluştur 23 şub. 092009-02-23 11:23:55 Anonymous