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