[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.python

indentation error

asit

3/5/2010 8:04:00 AM

Consider the following code

import stat, sys, os, string, commands

try:
pattern = raw_input("Enter the file pattern to search for :\n")
commandString = "find " + pattern
commandOutput = commands.getoutput(commandString)
findResults = string.split(commandOutput, "\n")
print "Files : "
print commandOutput
print "============================="
for file in findResults:
mode = stat.S_IMODE(os.lstat(file)[stat.ST_MODE])
print "\nPermissions for file", file, ":"
for level in "USR", "GRP", "OTH":
for perm in "R", "W", "X":
if mode & getattr(stat,"S_I"+perm+level):
print level, " has ", perm, " permission"
else:
print level, " does NOT have ", perm, "
permission"
except:
print "There was a problem - check the message above"


According to me, indentation is ok. but the python interpreter gives
an indentation error

[asit ~/py] $ python search.py
File "search.py", line 7
findResults = string.split(commandOutput, "\n")
^
IndentationError: unindent does not match any outer indentation level
3 Answers

Ulrich Eckhardt

3/5/2010 8:32:00 AM

0

asit wrote:
> pattern = raw_input("Enter the file pattern to search for :\n")
> commandString = "find " + pattern
> commandOutput = commands.getoutput(commandString)
> findResults = string.split(commandOutput, "\n")
> print "Files : "
> print commandOutput
> print "============================="
> for file in findResults:
> mode = stat.S_IMODE(os.lstat(file)[stat.ST_MODE])
> print "\nPermissions for file", file, ":"
> for level in "USR", "GRP", "OTH":
> for perm in "R", "W", "X":
> if mode & getattr(stat,"S_I"+perm+level):
> print level, " has ", perm, " permission"
> else:
> print level, " does NOT have ", perm, "
> permission"
[...]
> According to me, indentation is ok. but the python interpreter gives
> an indentation error
>
> [asit ~/py] $ python search.py
> File "search.py", line 7
> findResults = string.split(commandOutput, "\n")
> ^
> IndentationError: unindent does not match any outer indentation level

Hard to tell, since your posting was already line-broken which already
changes the correctness. In any case, watch for tabs/spaces, many editors
have an option to display whitespace.

Uli

--
Sator Laser GmbH
Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932

Steven D'Aprano

3/5/2010 11:49:00 AM

0

On Fri, 05 Mar 2010 00:04:13 -0800, asit wrote:

> Consider the following code
[snip]
> According to me, indentation is ok. but the python interpreter gives an
> indentation error

You can trust the interpreter. There *is* an indentation error. Most
likely you have mixed spaces and tabs. Try:

python -t -t search.py

instead. (Yes, -t twice.)

On an unrelated note, your code snippet shows a very poor coding style.
Firstly, bare "except" clauses are VERY bad practice: it will mask bugs
in your code. Secondly, you should wrap the smallest amount of code in
the try block as you need.

Something like this is probably better:


pattern = raw_input("Enter the file pattern to search for :\n")
commandString = "find " + pattern
commandOutput = commands.getoutput(commandString)
findResults = string.split(commandOutput, "\n")
print "Files : "
print commandOutput
print "============================="
for file in findResults:
try:
mode = stat.S_IMODE(os.lstat(file)[stat.ST_MODE])
except (IOError, OSError):
# Print a useless error message so your users will hate you.
print "There was a problem with %s" % file
continue
print "\nPermissions for file", file, ":"
for level in "USR", "GRP", "OTH":
for perm in "R", "W", "X":
if mode & getattr(stat,"S_I"+perm+level):
print level, " has ", perm, " permission"
else:
print level, " does NOT have ", perm, "permission"


--
Steven

Tim Roberts

3/7/2010 12:50:00 AM

0

asit <lipun4u@gmail.com> wrote:
>
>According to me, indentation is ok. but the python interpreter gives
>an indentation error
>
>[asit ~/py] $ python search.py
> File "search.py", line 7
> findResults = string.split(commandOutput, "\n")
> ^
>IndentationError: unindent does not match any outer indentation level

The most likely cause is mixing spaces with tabs.
--
Tim Roberts, timr@probo.com
Providenza & Boekelheide, Inc.