Last Updated on 2021-06-02 by Clay
Introduction
“os” is a Python package and it can help us to implement many infrastructure operators.
Today I want to traversal all file in my computer and count their size. So I use “os” package to do it. And I recorded it.
Ok, it’s go!
some functions of os
First, we have to know what are the functions they called listdir(), isdir(), getsize().
Suppose I had a folder named “test”, and there are three document in it.
We can use “os.listdir()” to show all file in the folder.
# -*- coding: utf-8 -*- import os print(os.listdir('test'))
Output:
['1.txt', '2.txt', '3.txt']
Yes, we saw them!
And then, we can determine if these files are folders by “os.path.isdir()”.
# -*- coding: utf-8 -*- import os path = 'test' print('Is "{}" a dictionary?'.format(path), os.path.isdir(path)) for fileName in os.listdir(path): print('Is "{}" a dictionary?'.format(fileName), os.path.isdir(path+'/'+fileName))
Output:
Is "test" a dictionary? True
Is "1.txt" a dictionary? False
Is "2.txt" a dictionary? False
Is "3.txt" a dictionary? False
Finally, we can use “getsize()” to return the size of file (bytes).
(I wrote some sentence in the file.)
Not so elegant, sorry.
And we fix some code:
# -*- coding: utf-8 -*- import os path = 'test' print('"{}"'.format(path), os.path.getsize(path)) for fileName in os.listdir(path): print('"{}"'.format(fileName), os.path.getsize(path+'/'+fileName))
Output:
"test" 0
"1.txt" 14
"2.txt" 0
"3.txt" 0
Traversal all files
My code:
# -*- coding: utf-8 -*- import os def check(path): folders = [] path = path try: for file in os.listdir(path): filePath = path+'/'+file if os.path.isdir(filePath): print(file, os.path.getsize('{}'.format(filePath))) folders.append(filePath) else: print(file, os.path.getsize('{}'.format(filePath))) except: print('PermissionError') for folder in folders: check(folder) if __name__ == '__main__': check('C:/')
We done!