Rename of .mdb file -- lock

103 views
Skip to first unread message

noydb

unread,
Dec 11, 2008, 9:15:59 PM12/11/08
to
All,

I have the code below, which unzips a zipfile containing only one
file. Once it is unzipped, I want to rename the file based on a user
provided name. But I get this (WindowsError: [Error 32] The process
cannot access the file because it is being used by another process)
error, which does not make sense to me as no other apps are open.

Any suggestions?

Thanks!

****CODE****
# Declare the zip file directory and name (shouldn't change, in a
permanent location)
mdb_zip = ("C:\\ProjWork\\mdb_geoDB_91.zip")

output_dir = ("C:\\Temp")


# ZipFile for read
z = zipfile.ZipFile(mdb_zip, 'r')
zFile = z.namelist()

# Put contents of zipfile into a list
zList = z.namelist()


# Loop thru list, write zipfile contents to new directory
for zItem in zList:
print "Unpacking",zItem
zRead = z.read(zItem)
z1File = open(os.path.join(output_dir, zItem),'wb')
z1File.write(zRead)
z1File.close
print "Finished extracting zip file"

uChoice = "test44.mdb" ## to be user chosen someday
new91mdb = os.path.join(output_dir, zItem) # C:\TEMP\GDB_9_1.mdb

##os.rename(new91mdb, (os.path.join(output_dir, uChoice)))
os.rename(new91mdb, (os.path.join(output_dir, "C:\TEMP\test1.mdb")))


del new91mdb

gudo...@gmail.com

unread,
Dec 11, 2008, 9:38:03 PM12/11/08
to
z1File.close()

noydb

unread,
Dec 11, 2008, 9:43:00 PM12/11/08
to
On Dec 11, 9:38 pm, "gudonghua+pyt...@gmail.com" <gudong...@gmail.com>
wrote:
> > del new91mdb- Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

Thanks! That was simple enough.

And...


##os.rename(new91mdb, (os.path.join(output_dir, uChoice)))
os.rename(new91mdb, (os.path.join(output_dir, "C:\TEMP\test1.mdb")))

... of those two lines, the top one worked.

Steve Holden

unread,
Dec 11, 2008, 10:42:24 PM12/11/08
to pytho...@python.org
noydb wrote:
> On Dec 11, 9:38 pm, "gudonghua+pyt...@gmail.com" <gudong...@gmail.com>
> wrote:
[...]

>
> Thanks! That was simple enough.
>
> And...
> ##os.rename(new91mdb, (os.path.join(output_dir, uChoice)))
> os.rename(new91mdb, (os.path.join(output_dir, "C:\TEMP\test1.mdb")))
>
> ... of those two lines, the top one worked.

The reason the second one didn't work is because "\t" is the tab
character. Look for "raw strings" in the documentation.

r"C:\TEMP\test1.mdb" should work.

regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/

Scott David Daniels

unread,
Dec 15, 2008, 2:01:02 PM12/15/08
to
noydb wrote:
> I have the code below, which unzips a zipfile containing only one
> file. Once it is unzipped, I want to rename the file based on a user
> provided name. But I get this (WindowsError: [Error 32] The process
> cannot access the file because it is being used by another process)
> error, which does not make sense to me as no other apps are open.
> Any suggestions?

Others have told you the reason you are currently having problems.
You should also be aware that Windows can at "random" times be opening
the new file in order to either index it or virus scan it, and it may
fail to rename during that period. So, a failure should retry in a
second a couple of times before giving up. This is my understanding,
but someone deeply familiar with Windows internals might reveal that
I am operating on older information.

--Scott David Daniels
Scott....@Acm.Org

MRAB

unread,
Dec 15, 2008, 2:40:21 PM12/15/08
to pytho...@python.org
It's always a good idea pause and then retry a few times, just in case.
Retrying is also a good idea when deleting a file, although in that case
you might also want to check whether the file is read-only; if it is,
then there's no point in retrying.
Reply all
Reply to author
Forward
0 new messages