Estoy intentando escanear mi disco duro para archivos jpg y mp3.os.path.isfile no funciona como se esperaba
He escrito la siguiente secuencia de comandos que funciona si paso un directorio con el archivo en la raíz pero no devuelve nada si lo paso por el directorio raíz.
Soy nuevo en Python, por lo que me gustaría algo de ayuda.
def findfiles(dirname,fileFilter):
filesBySize = {}
def filterfiles(f):
ext = os.path.splitext(f)[1][1:]
if ext in fileFilter:
return True
else:
False
for (path, dirs, fnames) in os.walk(dirname):
if len(fileFilter)>0:
fnames = filter(filterfiles,fnames)
d = os.getcwd()
os.chdir(dirname)
for f in fnames:
if not os.path.isfile(f) :
continue
size = os.stat(f)[stat.ST_SIZE]
if size < 100:
continue
if filesBySize.has_key(size):
a = filesBySize[size]
else:
a = []
filesBySize[size] = a
a.append(os.path.join(dirname, f))
# print 'File Added: %s' %os.path.join(dirname,f)
_filecount = _filecount + 1
os.chdir(d)
return filesBySize
¿Está tratando de buscar recursivamente por los directorios? – alexmherrmann
Hay un montón de código en esta función. ¿Qué te hace estar tan seguro de que es la llamada a 'os.path.isfile (f)' que va mal? También su función 'filterfiles()' probablemente debería 'devolver ext en fileFilter', ya que tiene un error tipográfico allí. – Johnsyweb
Sí, lo soy. Supongo que este es el problema, ya que cuando lo paso, la función incorporada devuelve falso cuando f es un archivo real. Podría estar lejos. ¿No estás seguro de dónde ves el error tipográfico? – gmoorevt