Я пытаюсь отсканировать свой жесткий диск для файлов jpg и mp3.os.path.isfile не работает должным образом
Я написал следующий скрипт, который работает, если я передам ему каталог с файлом в корневом каталоге, но ничего не возвращает, если я передам ему корневую директорию.
Я новичок в Python, поэтому мне понравилась бы помощь.
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
Вы пытаетесь рекурсивно искать в каталогах? – alexmherrmann
В этой функции много кода. Что заставляет вас быть уверенным, что это вызов 'os.path.isfile (f)', который идет наперекосяк? Также ваша функция 'filterfiles()' должна, вероятно, «возвращать ext в fileFilter', так как у вас есть опечатка. – Johnsyweb
Да, я. Я предполагаю, что это проблема, так как при ее выполнении встроенная функция возвращает false, когда f является реальным файлом. Я мог бы уйти. Не знаете, где вы видите опечатку? – gmoorevt