[英]How to find all files with specific file extensions in a directory in Python
[英]How to count files with 2 types of extensions in a directory in python?
我的目錄中包含幾種類型的文件。 如何計算具有兩種擴展名(.txt和.csv)的目錄中的文件數? 在我的搜索中,我發現了如何只使用一個擴展名進行計數
假設path
是文件夾的路徑。 然后
import os
# get list of files
list_of_files = os.listdir(path)
# txt files
num_txt = len([x for x in list_of_files if x.endswith(".txt")])
# csv files
num_csv = len([x for x in list_of_files if x.endswith(".csv")])
Yilun答案的一個更好的變體(已經很好,因為它不會像len(glob.glob("*.csv"))
和len(glob.glob("*.txt"))
一樣兩次掃描目錄len(glob.glob("*.txt"))
會這樣做例如)。
不會使用sum
(布爾值總和為0或1)和生成器理解來創建一個額外的列表(更快)。
import os
# get list of files
list_of_files = os.listdir(path)
# txt files
num_txt = sum(x.endswith(".txt") for x in list_of_files)
# csv files
num_csv = sum(x.endswith(".csv") for x in list_of_files)
gencomps + sum很酷,但是仍然在list_of_files
上循環/測試兩次。 良好的舊循環畢竟還算不錯(至少它會掃描一次和快捷方式):
num_txt, num_csv = 0,0
for x in list_of_files:
if x.endswith(".txt"):
num_txt += 1
elif x.endswith(".csv"):
num_csv += 1
BTW同時計數,使用endswith
的元組param能力
# csv & txt files
num_txt_csv = sum(x.endswith((".csv",".txt")) for x in list_of_files)
您可以使用正則表達式來過濾文件名:
import os
import re
txt_or_csv = [f for f in os.listdir(path) if re.search(r'.*\.(txt|csv)$', f)]
print(len(txt_or_csv))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.