0

Hopefully this question is easier than I think it is. :)

I have a directory with thousands and thousands of flv and jpeg files in it. I want to loop through the directory, get the file names and their sizes (in bytes) I've tried searching the web for a function to get the sizes, but I can't seem to find anything that talks about handling anything other than txt files. Any help would be much appreciated.

2
Contributors
2
Replies
3
Views
8 Years
Discussion Span
Last Post by zachabesh
0

Hi zachabesh,

Can't you just use os.path.getsize()? You call it with the name of the file as an argument.

0

Awesome! Thank you so much! I guess I didn't believe it would be that simple.

Heres what I did, which accomplished the task, but took forever as you might imagine.

import os
import dircache

#get the files
files = dircache.listdir("directory")

write = open("text.txt","w")
print "Onto the loop...."
print "-----------------"
c = 0

for x in files:
    
file = open(x, "rb")
    filelines = file.read()
    w = len(filelines)/1000
    file.close()
    j = "%s, %s\n" %(x,w)
    j = str(j)
    print "%d) %s" %(c,j)
    write.write(j)
    c = c + 1
print "Done!"
write.close()
print "File closed!"

after simplifying:

import os
import dircache

#Get the files from the directory
files = dircache.listdir("directory")

#open a file to write the files and the sizes into
write = open("text.txt","w")

print "Onto the loop...."
print "-----------------"

c = 0
for x in files:
    
    #open the file, get size
    file = open(x, "rb")
    w = os.path.getsize(file)
    file.close()
    #file closed
    
    j = "%s, %s\n" %(x,w)
    j = str(j)
    print "%d) %s" %(c,j)
    write.write(j)
    c = c + 1
    
print "Done!"
write.close()
print "File closed!"

Much faster!

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.