On 06/09/2012 15:56, Tigerstyle wrote:
Hi guys,

I'm trying to write a module containing a function to examine the contents of the current working 
directory and print out a count of how many files have each extension (".txt", 
".doc", etc.)

This is the code so far:
--
import os

path = "v:\\workspace\\Python2_Homework03\\src\\"
dirs = os.listdir( path )
filenames = {"this.txt", "that.txt", 
"the_other.txt","this.doc","that.doc","this.pdf","first.txt","that.pdf"}
extensions = []
for filename in filenames:
     f = open(filename, "w")
     f.write("Some text\n")
     f.close()
     name , ext = os.path.splitext(f.name)
     extensions.append(ext)

# This would print all the files and directories
for file in dirs:
     print(file)

for ext in extensions:
     print("Count for %s: " %ext, extensions.count(ext))

--

When I'm trying to get the module to print how many files each extension has, 
it prints the count of each ext multiple times for each extension type. Like 
this:

this.pdf
the_other.txt
this.doc
that.txt
this.txt
that.pdf
first.txt
that.doc
Count for .pdf:  2
Count for .txt:  4
Count for .doc:  2
Count for .txt:  4
Count for .txt:  4
Count for .pdf:  2
Count for .txt:  4
Count for .doc:  2

That's because each extension can occur multiple times in the list.

Try the Counter class:

from collections import Counter

for ext, count in Counter(extensions).items():
    print("Count for %s: " % ext, count)

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to