How to find the largest file in a directory in Python
Sometime while creating a program or writing a script in Python we need to find the largest file in a current directory. This is very simple task and can done by running a following script:
import os files = os.listdir(".") largest_file_size = 0 largest_file = "" for file in files: if os.path.isfile(file): size = os.path.getsize(file) if size < largest_file_size: largest_file_size = size largest_file = file print("largest file in current directory has filename "+largest_file+ " and size: "+str(largest_file_size)+" bytes.")
Output in my case:
dima@linux-zsrx:~/python> ls -l total 24 -rw-r--r-- 1 dima users 2036 May 17 16:29 dics.py -rw-r--r-- 1 dima users 405 May 18 03:40 largest_file_in_directory.py -rw-r--r-- 1 dima users 109 May 17 17:06 levyi -rw-r--r-- 1 dima users 680 May 17 19:00 levyi.py -rw-r--r-- 1 dima users 125 May 17 19:33 test01.py -rw-r--r-- 1 dima users 241 May 18 00:33 translitgeo.py dima@linux-zsrx:~/python> python smallest_file_in_directory.py the smallest file in current directory has filename levyi and size: 109 bytes.
What does that code?
First, we are making a list of files in a current directory using
os module. In order to understand, what does further code, we have to check, what kind of object we get by running
Normally we have to check, if chosen item is directory or file, but we know, that directory link cannot be the biggest item, that's why we dont't have to check it.
Let's check is separately:
>>> import os >>> files = os.listdir(".") >>> type(files) <type 'list'>
Ok, now we see, that
listdir() method is returning a list. It's good information, because now we know, that we can work with files variable as with a list. In further code we a looping a list (for file in files).