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
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
> 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
The most likely cause is mixing spaces with tabs.
--
Tim Roberts, ti...@probo.com
Providenza & Boekelheide, Inc.