Lebih
Bagaimana cara menghitung jumlah file dalam sebuah direktori menggunakan Python
Saya perlu untuk menghitung jumlah file dalam direktori dengan menggunakan Python.
Saya kira cara yang paling mudah adalah len(glob.glob('*'))
, tapi yang juga penting direktori itu sendiri sebagai sebuah file.
Apakah ada cara untuk menghitung hanya files di direktori?
192
20
os.listdir()
akan sedikit lebih efisien daripada menggunakanglob.glob
. Untuk menguji apakah nama file adalah sebuah file biasa (bukan sebuah direktori atau entitas lain), gunakanos.jalan.isfile()
:Untuk semua jenis file, termasuk subdirektori:
Hanya file (menghindari subdirektori):
Ini adalah di mana fnmatch datang sangat berguna:
Rincian lebih lanjut: http://docs.python.org/2/library/fnmatch.html
Saya terkejut bahwa tidak ada disebutkan
os.scandir
:Ini menggunakan
os.listdir
dan bekerja untuk setiap direktori:ini dapat disederhanakan dengan generator dan dibuat sedikit lebih cepat dengan:
Jika anda ingin menghitung semua file dalam direktori termasuk file dalam subdirektori, yang paling pythonic adalah:
Kami menggunakan jumlah yang lebih cepat daripada secara eksplisit menambahkan jumlah file (timing yang tertunda)
Dikeluarkan dari post ini
Berikut ini adalah sederhana satu baris perintah yang saya temukan berguna:
Luke's kode memformat ulang.
Sementara saya setuju dengan jawaban yang diberikan oleh @DanielStutzbach:
os.listdir()
akan sedikit lebih efisien daripada menggunakanglob.glob
.Namun, ekstra presisi, jika anda ingin menghitung jumlah file dalam folder, anda ingin menggunakan
len(glob.glob())
. Misalnya jika anda menghitung semua file pdf di folder yang ingin anda gunakan:Jika anda'akan menggunakan shell standar dari sistem operasi, anda bisa mendapatkan hasil jauh lebih cepat daripada menggunakan murni pythonic cara.
Contoh untuk Windows:
Saya menemukan jawaban lain yang mungkin benar sebagai jawaban yang diterima.
Hal ini sederhana:
itu hanya menghitung jumlah file dalam direktori , saya telah menggunakan daftar pemahaman teknik untuk iterate melalui direktori tertentu kembali semua file kembali . "len(kembali daftar)" kembali jumlah file.
Saya menggunakan
glob.iglob
untuk struktur direktori yang sama untukKedua opsi-opsi berikut kembali 4 (seperti yang diharapkan, yaitu tidak menghitung subfolder sendiri)
len(list(glob.iglob("data/train/*/*.png", rekursif=True)))
sum(1 untuk saya di glob.iglob("data/train/*/*.png"))
saya melakukan ini dan ini kembali jumlah file dalam folder(Attack_Data)...ini bekerja dengan baik.