[Tutor] Dos and os.walk with Python

Alan Gauld alan.gauld at btinternet.com
Fri Jan 25 02:11:00 CET 2008

"Timothy Sikes" <trs164 at hotmail.com> wrote

>  I don't know if it's okay to ask about Dos in python mailing list,

If its related to programming in python as well its fine :-)

> I don't know if there are any formatting rules for posting programs

It helps if we can see the formatting, especially since Python
relies on  layout. This was just a mess on my screen!

I've tried to sort it out...

import os, sys, time

def earlierThan (path, year, exclude=[]):
    all = []
    walk = os.walk(path)
    for root, dirs, files in walk:
        for i in files:
                if (time.localtime(os.path.getmtime(root + "\\" + 
i))[0] < year
                    and doesNotHave(exclude, root)) :
                    all.append(root + "\\" + i)
            except OSError:
                 #I think that I might need a more specific error 
                 #as this one would handle something
                 #That's not necessarily a broken file name. (I got 
one of them when I ran it).
                 print root + "\\" + i + " was not included in the 
    return all

def doesNotHave(exclude, root):
    for x in exclude:
        if root.startswith(x) > -1:
            return False
    return True

That last function is a little odd. startswith already returns
a boolean so comparing to -1 is weird. I'm not sure what
you think it will do.


>>> 'fred'.startswith('x')
>>> 'fred'.startswith('x') > -1
>>> 'fred'.startswith('f') > -1

I'm not sure when it would ever fail the test so I think your
function will nearly always return False.

> I've had little experience with dos.  I believe I should use the
> COMPACT, and then the MOVE dos command... Would
> it go something like this?

You could use these but you'd be better just using Python
to do it via the shutil and os modules and avoid the DOS
commands completely IMHO.


Alan Gauld
Author of the Learn to Program web site

More information about the Tutor mailing list