os.path.isdir is always returning false


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting os.path.isdir is always returning false
# 1  
Old 05-21-2009
os.path.isdir is always returning false

Just started with learning python and tried something, most people here would call more than simple.

I just wanted to list all directories within my main directory. So I user the following code:

Code:
#!/usr/bin/env python

import os

if os.path.isdir("/home/testaccaunt/public_html"):
     print "I am a directory"
else:
     print "I am NO directory"

So that is just a first test for me and the result is always that my public_html folder is no directory. I also tested it with os.path.isfile and os.path.islink and it alway tells me that it is something different.

Hopefully you have an idea on that. It is on CentOs 5.
# 2  
Old 05-21-2009
Quote:
Originally Posted by medic
Just started with learning python and tried something, most people here would call more than simple.

I just wanted to list all directories within my main directory. So I user the following code:

[code]
it shouldn't be. os.path.isdir() is supposed to do what it says it does. show your a listing of "/home/testaccaunt" directory.
# 3  
Old 05-22-2009
As a found it at nearly every beginner guide, with the os.listdir option I am listing all files and folders within my directory and the os.path.isdir is used to find out that one is a file or a directory.

So I just the tried the following piece of code:

Code:
#!/usr/bin/env python

import os

filelist = os.listdir("/home")

for file in filelist:
     if os.path.isdir(file):
          print "I am a directory"
      else:
          print "I am NO directory"

If I just remove the if, I am able to print all files and directories, but that tiny if clause is just not working. Any idea where my fault is?
# 4  
Old 05-22-2009
Quote:
Originally Posted by medic
As a found it at nearly every beginner guide, with the os.listdir option I am listing all files and folders within my directory and the os.path.isdir is used to find out that one is a file or a directory.

So I just the tried the following piece of code:

Code:
#!/usr/bin/env python

import os

filelist = os.listdir("/home")

for file in filelist:
     if os.path.isdir(file):
          print "I am a directory"
      else:                                   <<<----- make sure this indentation is correspond to previous "if"
          print "I am NO directory"

If I just remove the if, I am able to print all files and directories, but that tiny if clause is just not working. Any idea where my fault is?
try this
Code:
#!/usr/bin/env python
import os
root="/home"
for files in os.listdir(root):    
    if os.path.isdir(os.path.join(root,files)):
        print "Directory : ",files

# 5  
Old 05-22-2009
Thanks for the fast reply, that works, but where is the big difference ?

Is there any reason why my posted code is just always telling that there is no directory?
# 6  
Old 05-22-2009
Quote:
Originally Posted by medic
Thanks for the fast reply, that works, but where is the big difference ?

Is there any reason why my posted code is just always telling that there is no directory?
to use os.listdir(), i always change directory first to the directory of interest
Code:
os.chdir("/home")
for files in os.listdir("."):
  .....

otherwise, use the full path by joining, as in the previous example.
# 7  
Old 05-22-2009
Okay, now I got it. Thanks for all you help, I will now go ahead with my guides.

Just one question, could you recommend a good python editor?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

False alerts

Hi I have written a script to send email alerts when load of my linux server reaches max point I keep getting false emails thought the load is normal , looks like same email is generated again and again - called from cron tab checked if the tempfile is present , no it is not , cleaned... (22 Replies)
Discussion started by: anil529
22 Replies

2. Shell Programming and Scripting

If echo statement return false

I have this code that sometimes return a false value and the code inside the if statement gets executed and error out. Any idea why? thanks. So I set a debug and see what the value for $ScriptElapsedTime Here is the value I got ScriptElapsedTime='03:20'. Base on this value the if... (10 Replies)
Discussion started by: nugent
10 Replies

3. UNIX for Dummies Questions & Answers

Find commmand returning search path with the result set

OS Platform : Oracle Linux 6.5 We are creating a shell script to purge old log files . It uses find command with rm in it. The syntax is find <Path of Log Directory> -exec rm -fr {} \; Example: find /tmp/test3 -exec rm -fr {} \; For rm command , we use -r option to... (4 Replies)
Discussion started by: kraljic
4 Replies

4. AIX

Gid=0 and 7 + admin=FALSE

Checking configuration access files for an AIX server, left me wondering about this :confused:: If a user is added to system group, it gets gid=0 with some security risks because it gets some root kind of file access level. Is this insecure condition kept if the user has admin variable... (0 Replies)
Discussion started by: bkiddo
0 Replies

5. IP Networking

false tcp connection

Why this happens? How to solve this? $netstat -na |grep 9325 tcp 0 0 127.0.0.1:9325 127.0.0.1:9325 ESTABLISHED When a client socket repeatedly tries to connect to an inactive(no server socket is listening on this port) local port,connect succeeds. ... (1 Reply)
Discussion started by: johnbach
1 Replies

6. Shell Programming and Scripting

False Condition

Hi All, I am using the below Script to enter a line in the File: #!/bin/ksh # To delete the last line if it contains the pattern Redirect permanent / Virgin Atlantic Airways - Popup echo "Enter the URL that should point to the particular microsite" read url # To delete the last line if it... (0 Replies)
Discussion started by: Shazin
0 Replies

7. Shell Programming and Scripting

Why is it always false?

Hi, I'm new to UNIX and am trying to learn shell scripting in order to work on an interface that I inherited when a co-worker left. I need to be able to check to see whether a file exists to determine whether the FTP has taken place, but in testing, the if statement always evaluates as false,... (3 Replies)
Discussion started by: JeffR
3 Replies

8. Shell Programming and Scripting

false use of sed???

i want to delete every newline and every line which starts with "RECORD......." in a file. FILE: Record 61391 in base BROCKHAUS (Timestamp: 2008-04-09 11:38:38) UNTERTITEL : Gräfin (seit 1707 Reichsgräfin) von, * Schwerin 4. 2. 1686, + Berlin 21. 10. 1744; wurde Record 61392 in base BROCKHAUS... (4 Replies)
Discussion started by: trek
4 Replies

9. Linux

bin\false

We have requirments to not allow a userid login abilities but allow users to 'su' to it. In solaris I normally set the shell in /etc/passwd to bin/false. THis does not work on Linux, any suggestions would help. (1 Reply)
Discussion started by: bryanthomas
1 Replies

10. AIX

RAID level of array = false?

I created a RAID 5 array and when I list out the attributes of the "hdisk" it reports back raid_level = 5 but the RAID level of the array = false. What does this actually indicate about my array? I've never paid much attention to this until now since I have a disk reporting failure I want to make... (0 Replies)
Discussion started by: scottsl
0 Replies
Login or Register to Ask a Question