Curious issue with simple code

Richard Morello richard at sneakerfish.com
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,
Rich.

-----Original Message-----
From: python-list-bounces+richard=sneakerfish.com at python.org
[mailto:python-list-bounces+richard=sneakerfish.com at python.org] On Behalf Of
codefire
Sent: Tuesday, September 19, 2006 1:08 PM
To: python-list at python.org
Subject: Curious issue with simple code


Hi,

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

[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_tree(fp)

print os.path
print_tree(r'c:\intent\docn')
[/code]

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,

Tony

-- 
http://mail.python.org/mailman/listinfo/python-list





More information about the Python-list mailing list