If os.path.isdir(itemfullpath): recursedir(itemfullpath) else: print('%s -%s bytes'% (itemfullpath, os.stat(itemfullpath).stsize)) Using os.walk to get the total size of a directory. There's nothing wrong with the examples above, but there is a more powerful way to go through directories recursively, and that is with the os.walk. 函数声明:os.path.walk(top,func,arg) (1)参数top表示需要遍历的目录路径 (2)参数func表示回调函数,即对遍历路径进行处理的函数。所谓回调函数,是作为某个函数的参数使用,当某个时间触发时,程序将调用定义好的回调函数 处理某个任务。.
Overview
In an earlier post, OS.walk in Python, I described how to use os.walk and showed some examples on how to use it in scripts.
In this article, I will show how to use the os.walk() module function to walk a directory tree, and the fnmatch module for matching file names.
What is OS.walk?
It generates the file names in a directory tree by walking the tree either top-down or bottom-up.
For each directory in the tree rooted at directory top (including top itself), it yields a 3-tuple (dirpath, dirnames, filenames).
dirpath # is a string, the path to the directory.
dirnames # is a list of the names of the subdirectories in dirpath (excluding ‘.’ and ‘..’).
Os.path.walk Recursive
filenames # is a list of the names of the non-directory files in dirpath.
Note that the names in the lists contain no path components.
To get a full path (which begins with top) to a file or directory in dirpath, do os.path.join(dirpath, name). For more information, please see the Python Docs.
What is Fnmatch
The fnmatch module compares file names against glob-style patterns such as used by Unix shells.
These are not the same as the more sophisticated regular expression rules. It’s purely a string matching operation.
Os.walk Path To File
If you find it more convenient to use a different pattern style, for example regular expressions, then simply use regex operations to match your filenames. http://www.doughellmann.com/PyMOTW/fnmatch/
What does it do?
Os.path.walk
The fnmatch module is used for the wild-card pattern matching.
Simple Matching
fnmatch() compares a single file name against a pattern and returns a boolean indicating whether or not they match. The comparison is case-sensitive when the operating system uses a case-sensitive file system.
Recommended Python Training
For Python training, our top recommendation is DataCamp.
Os Walk Relative Path
Filtering
To test a sequence of filenames, you can use filter(). It returns a list of the names that match the pattern argument.
Find all mp3 files
This script will search for *.mp3 files from the rootPath (“/”)
Search computer for specific files
This script uses ‘os.walk’ and ‘fnmatch’ with filters to search the hard-drivefor all image files
Python Os Walk Dir
There are many other (and faster) ways to do this, but now you understand thebasics of it.
More Reading
Recommended Python Training
Os Path Walk Python
For Python training, our top recommendation is DataCamp.