Hi,
I was trying to write a python script to take in a directory, recursive scan it for all files, keep track the number of files with a particular extension and print how many files of each extension type there were.
Unfortunately I’m getting the following error:
Traceback (most recent call last):
File "H:\search.py", line 30, in <module>
extensionarray = check_format(filearray)
File "H:\search.py", line 18, in check_format
val = index(result1, extension)
File "H:\search.py", line 13, in index
return next((i for i in xrange(len(seq)) if f(seq[i])), 'None')
File "H:\search.py", line 13, in <genexpr>
return next((i for i in xrange(len(seq)) if f(seq[i])), 'None')
TypeError: 'str' object is not callable
I would appreciate any help, this was what I have so far:
import os, sys
def get_all_files(srchpath):
allfiles = []
for root, dirs, files in os.walk(srchpath):
for file in files:
pathname = os.path.join(root, file)
extension = os.path.splitext(file)[1]
allfiles.append([file, pathname, extension])
return allfiles
def index(seq, f):
return next((i for i in xrange(len(seq)) if f(seq[i])), 'None')
def check_format(thefiles):
result1 = []
for filename, pathname, extension in thefiles:
val = index(result1, extension)
if val == 'None':
result1.append([extension, 0])
else:
result1[val][1] += 1
return result1
def print_array(thearray):
for val in range(1, len(thearray)):
print thearray[val]
filearray = get_all_files(sys.argv[1])
extensionarray = check_format(filearray)
print_array(extensionarray)
** thanks nbrane for catching my first mistake!
you, me both brother – you’re an order of magnitude beyond me since i know zero – but i am interested to learn. You have made a start!
what is f, and where is it defined or established or assigned?
f(seq[i])), ‘None’)
if f is undefined, interp. might be looking for a function “f”. but my take on it is that f is supposed to be either an array of, or a string of extensions. i don’t know how arrays expressed in python: whether [] or (). might be you are not expressing the array definition as py wants it?
my guess is the critical-issue is item “f”.