Tôi đang cố gắng quét đĩa cứng của mình cho các tệp jpg và mp3.os.path.isfile không hoạt động như mong đợi
Tôi đã viết tập lệnh sau hoạt động nếu tôi chuyển cho nó một thư mục có tệp trong thư mục gốc nhưng không trả về bất cứ thứ gì nếu tôi chuyển nó vào thư mục gốc.
Tôi mới sử dụng Python nên rất thích sự trợ giúp.
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
Bạn đang cố tìm kiếm đệ quy thông qua các thư mục? – alexmherrmann
Có rất nhiều mã trong hàm này. Điều gì làm cho bạn chắc chắn rằng đó là lời kêu gọi để 'os.path.isfile (f)' mà là đi awry? Ngoài ra hàm 'filterfiles()' của bạn có thể 'trả về ext trong tệpFilter', vì bạn có lỗi đánh máy ở đó. – Johnsyweb
Vâng tôi. Tôi đoán đây là vấn đề như khi tôi bước qua nó được xây dựng trong chức năng trả về false khi f là một tập tin thực sự. Tôi có thể là cách tắt. Bạn không chắc chắn nơi bạn nhìn thấy lỗi đánh máy? – gmoorevt