2017-05-29 2 views
1

In meinem Ordner gibt es zwei Arten von Dateien: html und txt. Ich möchte die Gesamtgröße der txt Dateien wissen.python count size spezifischer Typ Datei txt in einem Verzeichnis

Ich habe diesen Code gefunden, aber wie kann ich ihn für meine Bedürfnisse anwenden?

import os 
from os.path import join, getsize 
size = 0 
count = 0 
for root, dirs, files in os.walk(path): 
    size += sum(getsize(join(root, name)) for name in files) 
    count += len(files) 
print count, size 
+0

Für Namen in Dateien, wenn Name in '. Txt' - fügen Sie dies am Ende. Aber os Pfad hat auch einen nativen Befehl, an den ich mich nicht erinnern kann. Ich kann einen Blick werfen, wenn ich am Computer bin.) –

+0

.endswith ist, was Sie brauchen :) –

Antwort

2

Sie können, welche Dateien qualifizieren, indem sie ein if den Comprehensions hinzufügen:

for root, dirs, files in os.walk(path): 
    size += sum(getsize(join(root, name)) for name in files if name.endswith('.txt')) 
    count += sum(1 for name in files if name.endswith('.txt')) 
print count, size 
+0

funktioniert für die Größe, aber Ihre dritte Zeile zeigt rote Linie auf "Name": nicht aufgelöster Referenzname. NameError: globaler Name 'name' ist nicht definiert. Muss ich name = '' machen? –

+0

ok, es war 1 für _ in Dateien. Ich habe _ als Namen ersetzt. Dann funktioniert, danke –

1

bessere Nutzung glob (https://docs.python.org/3/library/glob.html) statt os Ihre Dateien zu finden. das macht es imho lesbarer.

import glob 
import os 

path = '/tmp' 
files = glob.glob(path + "/**/*.txt") 
total_size = 0 
for file in files: 
    total_size += os.path.getsize(os.path.join(path, file)) 
print len(files), total_size 
+0

Das funktioniert auch –

Verwandte Themen