Re: [Tutor] Problem with os.access function. [semantic error, if check does not work]

2005-12-26 Thread Panagiotis Atmatzidis
Hello,

Thank you both for the tip's and the interesting links. I resolved my
problem easily using another function, os.path.isdir(x) which was more
specific.

Best Regards.

On 12/24/05, bob <[EMAIL PROTECTED]> wrote:
> At 05:20 AM 12/24/2005, Panagiotis Atmatzidis wrote:
> >Hello,
> >
> >I am writing a function in order to check if a directory exists. If
> >exists the functions must do nothing, otherwise must check the users
> >permissions and if it's possible create the dir. Looking at pydoc's
> >httpd I found the module "os" and the function "access". From the
> >http-doc:
> >
> >access(...)
> >access(path, mode) -> 1 if granted, 0 otherwise
> >
> >Use the real uid/gid to test for access to a path.  Note that most
> >operations will use the effective uid/gid, therefore this routine can
> >be used in a suid/sgid environment to test if the invoking user has the
> >specified access to the path.  The mode argument can be F_OK to test
> >existence, or the inclusive-OR of R_OK, W_OK, and X_OK.
> >
> >This is my function:
> >
> >def homedirhandle():
> >   path = "/some/dir/" # check the existance of the
> >directory
> >   mode = 755
>
> should be mode = 0755 (octal representation) for mkdir. For
> access: "The mode argument can be F_OK to test existence, or the
> inclusive-OR of R_OK, W_OK, and X_OK." suggests that only 1 digit is expected.
>
> >   check_path = os.access(path, mode)
> >   print check_path
> >   if check_path == 'False':
>
> Should be if check_path == False:
>
> Or even simpler if not check_path:
>
> Use print repr(check_path). Then you'd see either True or 'True'.
> That would help you see whether check_path is boolean or string.
>
> >  print ""
> >  print "Directory /some/dir does not exist."
> >  print "Trying to create the directory."
> >  uid = os.geteuid()
> >  print "the uid is ", uid
> >  if uid == '0':
>
> I think (not having UNIX access at the moment) that this should be if uid == 
> 0:
>
> >   try:
> >os.mkdir(path, mode)
> >print ""
> >print "The directory has been created."
> >print ""
> >return path
> >   except OSError, e:
> > print ""
> > print >>sys.stderr, "The mkdir command failed:
> >%d (%s)" % (e.errno, e.strerror)
> > print ""
> > print "Exiting"
> > sys.exit(1)
> >
> >  if check_path == '1':
>
> == 1
>
> > print ""
> > print "The directory /some/dir has been created."
> > print ""
> > return path
> >  else:
> > print "Please create the directory /some/dir manually and
> >then re-run vuhalndler."
> > print "Exiting"
> > sys.exit()
> >   else:
> >  print ""
> >  print "The directory already exists."
> >  print ""
> >  return path
> >
> >Now the problem lies at the first check "  if check_path == 'False':
> >". It's a semantic error, the program does not really check the dir,
> >it just takes for granted that the dir exists. I tried with 1 before
> >putting "False" there.. but it did not work so I took the print result
> >of check_path and substitute  1 with False. But still nothing :-(
> >
> >Why does not make the check? I thought that the functions
> >functionality was clear.. probably is not.
> >
> >
> >
> >--
> >Panagiotis
> >___
> >Tutor maillist  -  Tutor@python.org
> >http://mail.python.org/mailman/listinfo/tutor
>
>


--
Panagiotis
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Problem with os.access function. [semantic error, if check does not work]

2005-12-25 Thread Alan Gauld
Take a look at my draft OS topic(click the url below).

It will point you at several other functions that will be of use...

Alan G
Author of the learn to program web tutor
http://www.freenetpages.co.uk/hp/alan.gauld/tutos.htm


- Original Message - 
From: "Panagiotis Atmatzidis" <[EMAIL PROTECTED]>
To: "Python Tutor" 
Sent: Saturday, December 24, 2005 1:20 PM
Subject: [Tutor] Problem with os.access function. [semantic error,if check 
does not work]


Hello,

I am writing a function in order to check if a directory exists. If
exists the functions must do nothing, otherwise must check the users
permissions and if it's possible create the dir. Looking at pydoc's
httpd I found the module "os" and the function "access". From the
http-doc:

access(...)
access(path, mode) -> 1 if granted, 0 otherwise

Use the real uid/gid to test for access to a path.  Note that most
operations will use the effective uid/gid, therefore this routine can
be used in a suid/sgid environment to test if the invoking user has the
specified access to the path.  The mode argument can be F_OK to test
existence, or the inclusive-OR of R_OK, W_OK, and X_OK.

This is my function:

def homedirhandle():
  path = "/some/dir/" # check the existance of the
directory
  mode = 755
  check_path = os.access(path, mode)
  print check_path
  if check_path == 'False':
 print ""
 print "Directory /some/dir does not exist."
 print "Trying to create the directory."
 uid = os.geteuid()
 print "the uid is ", uid
 if uid == '0':
  try:
   os.mkdir(path, mode)
   print ""
   print "The directory has been created."
   print ""
   return path
  except OSError, e:
print ""
print >>sys.stderr, "The mkdir command failed:
%d (%s)" % (e.errno, e.strerror)
print ""
print "Exiting"
sys.exit(1)

 if check_path == '1':
print ""
print "The directory /some/dir has been created."
print ""
return path
 else:
print "Please create the directory /some/dir manually and
then re-run vuhalndler."
print "Exiting"
sys.exit()
  else:
 print ""
 print "The directory already exists."
 print ""
 return path

Now the problem lies at the first check "  if check_path == 'False':
". It's a semantic error, the program does not really check the dir,
it just takes for granted that the dir exists. I tried with 1 before
putting "False" there.. but it did not work so I took the print result
of check_path and substitute  1 with False. But still nothing :-(

Why does not make the check? I thought that the functions
functionality was clear.. probably is not.



--
Panagiotis


___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Problem with os.access function. [semantic error, if check does not work]

2005-12-24 Thread bob
At 05:20 AM 12/24/2005, Panagiotis Atmatzidis wrote:
>Hello,
>
>I am writing a function in order to check if a directory exists. If
>exists the functions must do nothing, otherwise must check the users
>permissions and if it's possible create the dir. Looking at pydoc's
>httpd I found the module "os" and the function "access". From the
>http-doc:
>
>access(...)
>access(path, mode) -> 1 if granted, 0 otherwise
>
>Use the real uid/gid to test for access to a path.  Note that most
>operations will use the effective uid/gid, therefore this routine can
>be used in a suid/sgid environment to test if the invoking user has the
>specified access to the path.  The mode argument can be F_OK to test
>existence, or the inclusive-OR of R_OK, W_OK, and X_OK.
>
>This is my function:
>
>def homedirhandle():
>   path = "/some/dir/" # check the existance of the
>directory
>   mode = 755

should be mode = 0755 (octal representation) for mkdir. For 
access: "The mode argument can be F_OK to test existence, or the 
inclusive-OR of R_OK, W_OK, and X_OK." suggests that only 1 digit is expected.

>   check_path = os.access(path, mode)
>   print check_path
>   if check_path == 'False':

Should be if check_path == False:

Or even simpler if not check_path:

Use print repr(check_path). Then you'd see either True or 'True'. 
That would help you see whether check_path is boolean or string.

>  print ""
>  print "Directory /some/dir does not exist."
>  print "Trying to create the directory."
>  uid = os.geteuid()
>  print "the uid is ", uid
>  if uid == '0':

I think (not having UNIX access at the moment) that this should be if uid == 0:

>   try:
>os.mkdir(path, mode)
>print ""
>print "The directory has been created."
>print ""
>return path
>   except OSError, e:
> print ""
> print >>sys.stderr, "The mkdir command failed:
>%d (%s)" % (e.errno, e.strerror)
> print ""
> print "Exiting"
> sys.exit(1)
>
>  if check_path == '1':

== 1

> print ""
> print "The directory /some/dir has been created."
> print ""
> return path
>  else:
> print "Please create the directory /some/dir manually and
>then re-run vuhalndler."
> print "Exiting"
> sys.exit()
>   else:
>  print ""
>  print "The directory already exists."
>  print ""
>  return path
>
>Now the problem lies at the first check "  if check_path == 'False':
>". It's a semantic error, the program does not really check the dir,
>it just takes for granted that the dir exists. I tried with 1 before
>putting "False" there.. but it did not work so I took the print result
>of check_path and substitute  1 with False. But still nothing :-(
>
>Why does not make the check? I thought that the functions
>functionality was clear.. probably is not.
>
>
>
>--
>Panagiotis
>___
>Tutor maillist  -  Tutor@python.org
>http://mail.python.org/mailman/listinfo/tutor

___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor