簡體   English   中英

如何在python目錄中計算具有2種擴展名的文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM