Can't write to a directory made w/ os.makedirs

David Goldsmith eulergaussriemann at gmail.com
Sun Jan 1 07:05:13 EST 2012


On Jan 1, 1:37 am, Tim Golden <m... at timgolden.me.uk> wrote:
> On 31/12/2011 22:13, OlyDLG wrote:
>  > Hi!  I'm working on a script utilizing os.makedirs to make directories
>  > to which I'm then trying to write files created by exe's spawned w/
>  > subprocess.call; I'm developing in Stani's Python Editor, debugging
>  > using Winpdb.  I've gotten to the point where
>  > subprocess.Popen._execute_child is raising a WindowsError(5,'Access is
>  > denied') exception.  I've tried: setting the mode in the makedirs
>  > call; using os.chmod(<dir>, stat.S_IWRITE); and even setting a
>  > breakpoint before the subprocess.call and unsetting the read-only
>  > attribute of the pertinent directory tree using the Windows directory
>  > Properties dialog--which doesn't "take," if that's a clue--all to no
>  > avail.
>
> Whatever you're trying to do, resetting the read-only bit
> on the Windows directory is not the answer. It has, bizarrely,
> nothing to do with the read/write-ness of a directory; rather,
> it reflects the system-ness of a folder.
>
> There's no general answer I can see to give, without
> knowing what the security is on your folders or what
> other thing might impede your processes from writing
> files in them. Is it definite that the ERROR_ACCESS_DENIED
> is in fact the result of attempting to write a file into
> one of the newly-created directories?
>
> Can you do something like this (adapt for your own environment):
>
> <code>
> import os, sys
> import subprocess
>
> os.makedirs ("c:/temp/a/b/c")
>
> with open ("c:/temp/a/b/c/test1.txt", "w"):
>    pass
>
> subprocess.call ([
>    sys.executable,
>    "-c",
>    "open ('c:/temp/a/b/c/test2.txt', 'w').close ()"
> ])
>
> </code>
>
> ie can the Python process creating the directories,

Yes.

> and a subprocess called from it create a simple file?

No.

> Depending on where you are in the filesystem, it may indeed
> be necessary to be running as administrator. But don't try
> to crack every security nut with an elevated sledgehammer.

If you mean running as admin., those were my sentiments exactly.  So,
there isn't something specific I should be doing to assure that my
subproceses can write to directories?
>
> TJG




More information about the Python-list mailing list