Curious issue with simple code

Diez B. Roggisch deets at nospam.web.de
Tue Sep 19 13:27:36 EDT 2006


codefire wrote:

> 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?

Of course not, unless a file with that very name exists in the current
working directory. Otherwise, where would be the difference between a
full-path and the leaf path?

Diez



More information about the Python-list mailing list