Return to Snippet

Revision: 68307
at December 29, 2014 23:42 by tionazo


Initial Code
import fnmatch
import os
 
############################################
#    Find all mp3 files                    #
#                                          #
#    This script will search for *.mp3     #
#     files from the rootPath ("/")        # 
#                                          #
############################################

rootPath = '/'
pattern = '*.mp3'
 
for root, dirs, files in os.walk(rootPath):
    for filename in fnmatch.filter(files, pattern):
        print( os.path.join(root, filename))


############################################
#    Search computer for specific files    #
#                                          #
#    This script uses 'os.walk' and        #
#      'fnmatch' with filters to search    #
#      the hard-drive for all image files  # 
#                                          #
############################################

images = ['*.jpg', '*.jpeg', '*.png', '*.tif', '*.tiff']
matches = []

for root, dirnames, filenames in os.walk("C:\\"):
    for extensions in images:
        for filename in fnmatch.filter(filenames, extensions):
            matches.append(os.path.join(root, filename))

Initial URL
http://www.pythonforbeginners.com/systems-programming/os-walk-and-fnmatch-in-python/

Initial Description
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 '..'). 

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. 

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?

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.

Filtering
To test a sequence of filenames, you can use filter(). 

It returns a list of the names that match the pattern argument.

Initial Title
Buscar ficheros en el ordenador

Initial Tags
python

Initial Language
Python