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