Python Forum

Full Version: os.path.isdir(<whatever>) returns always True
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I am running a Python script, which is supposed to check whether a directory already exists:
import os
#!/usr/bin/env python 

source_dir = <inexistent directory>

if (os.path.isdir(source_dir)):
    print "source directory not found"
else:
    print "source directory found"
    os.system("ls -l " + source_dir)
will always enter the else statement (directory found) for an non-existing directory
and fail while trying to display the content of the inexistent directory.

What is wrong in my code?

My code runs correctly if run inside the console Python interpreter.
My code always fails if run as a script on the very same console.

Fabrizio
It is similar to this
if a == b:
    print('a and b are different')
else:
    print('a and b are equal')
@Gribouillis ??
Why it does not work then?

I am not comparing things. I am checking if something is True or False.
I just want to know whether a directory exists or not. How should I do it?

It gives the wrong answer if I run it as a script.
Look carefully at your code. I have a feeling that you've been looking at it so long, you've developed tunnel vision, and are skipping over parts of what's happening.

(Dec-04-2018, 02:22 PM)Fabrizio Wrote: [ -> ]
if (os.path.isdir(source_dir)):
    print "source directory not found"

Here, let me help rewrite it for you:
source_dir = "/literally_nowhere"
directory_exists = os.path.isdir(source_dir)

if directory_exists:
    print("It doesn't exist")
Or, to break it down even further:
if False:
    print("It's True")
Obviously the else part is running: the condition you're checking is False.