Curious issue with simple code

Richard Morello richard at
Tue Sep 19 19:29:23 CEST 2006

Dear Tony,

You're not in that directory (start_dir) when the isfile() function is
called.  See function os.path.curdir() and os.chdir().  Also, you may be
confusing the behavior of os.path.walk(), in which the function called will
happen once you have been chdired to the directory it is examining.  

Hope this was helpful.

Yours truly,

-----Original Message-----
From: at
[ at] On Behalf Of
Sent: Tuesday, September 19, 2006 1:08 PM
To: python-list at
Subject: Curious issue with simple code


I have some simple code - which works...kind's the code:

import os

def print_tree(start_dir):
    for f in os.listdir(start_dir):
        fp = os.path.join(start_dir, f)
        print fp
        if os.path.isfile(fp): # will return false if use f here!
            if os.path.splitext(fp)[1] == '.html':
                print 'html file found!'
        if os.path.isdir(fp):

print os.path

As above it all works as expected. However, on the marked line, if I use f
instead of fp then that condition returns false! Surely,
isfile(f) should return true, even if I just give a filename, rather than
the full path? 

If anyway can explain this I'd be grateful,



More information about the Python-list mailing list