[Python-Help] os listdir access denied when run as a service
Danny Yoo
dyoo at hkn.eecs.berkeley.edu
Thu May 25 09:55:40 EDT 2006
On Thu, 25 May 2006, Thomas Thomas wrote:
> I am trying to access a mapped network drive folder. everything works
> fine normally. But when i run the application as service I am getting
> the error
The error is on the line:
for filename in os.listdir(folder):#line 25
and I have to assume that the bad call here is to os.listdir().
What's the particular input that's being sent to os.listdir() at the point
of failure? As far as I can tell, the error message:
> Traceback (most recent call last):
> File "docBoxApp.py", line 129, in ?
> File "core\PollFiles.pyc", line 332, in doPoll
> File "core\PollFiles.pyc", line 47, in createFileList
> File "core\PollFiles.pyc", line 25, in addFolderFiles
> WindowsError: [Errno 5] Access is denied:'G:\\DT Hot Folder test/*.*'
suggests that 'G:\\DT Hot Folder test/*.*' might be the folder being
passed. If so, that could be the problem, since os.listdir takes the name
of a directory: it does not take a file glob.
Can you check to see what 'folder' is being passed into your program in
the context of a file service? The problem may simply be bad input.
We can check early on this by programming a bit defensively, mandating
that on entry to addFolderFiles that 'folder' must be an existing
directory:
########################################
def addFolderFiles(folder, filelist=[]):
assert os.path.isdir(folder)
...
########################################
in which case, if we get past the assertion, we'll be able to at least
know that we're getting in semi-good input.
One other note: it is not recommended that we use a list as a default
parameter value. That value will be shared among all calls to
addFolderFiles, so we will see side effects. See the "Important Warning"
in:
http://docs.python.org/tut/node6.html#SECTION006710000000000000000
More information about the Python-list
mailing list