[Tutor] Formatting zip module arguments correctly

bob gailer bgailer at gmail.com
Sun Apr 5 23:28:27 CEST 2009


Benjamin Serrato wrote:
 > Please tell me why this code fails. I am new and I don't understand 
why my formatting of my zip arguments is incorrect. Since I am unsure 
how to communicate best so I will show the code, the error message, and 
what I believe is happening.
 >
 > #!c:\python30
 > # Filename: backup_ver5.py
 >
 > import os
 > import time
 >
 > import zipfile
 >
 >
 > source = r'C:\Documents and Settings\Benjamin Serrato\My 
Documents\python\backup_list'
 >
 > target_dir = r'C:\Documents and Settings\Benjamin Serrato\My 
Documents\python\backup_dir'
 >
 >
 > today = target_dir + os.sep + time.strftime('%Y%m%d')
 >
 > now = time.strftime('%H%M%S')
 >
 > comment = input('Enter a comment --> ')
 >
 > if len(comment) == 0:
 >     target = today + os.sep + now + '.zip'
 >
 > else:
 >     target = today + os.sep + now + '_' + \
 >     comment.replace(' ', '_') + '.zip'
 >
 > if not os.path.exists(today):
 >     os.mkdir(today)
 >     print('Successfully created directory', today)
 >
 >
 >
 > print(target)
 > print(source)
 > zip_command = zipfile.ZipFile(target, 'w').write(source)
 >
 > if os.system(zip_command) == 0:
 >     print('Successful backup to', target)
 > else:
 >     print('Backup FAILED')
 >
 >
 > I receive this error message:
 >
 > Enter a comment -->
 > C:\Documents and Settings\Benjamin Serrato\My 
Documents\python\backup_dir\200904
 > 05\154956.zip
 > C:\Documents and Settings\Benjamin Serrato\My 
Documents\python\backup_list
 > Traceback (most recent call last):
 >   File "C:\Documents and Settings\Benjamin Serrato\My 
Documents\python\backup_ve
 > r5.py", line 32, in <module>
 >     zip_command = zipfile.ZipFile(target, 'w').write(source)
 >   File "c:\python30\lib\zipfile.py", line 1031, in write
 >     fp = io.open(filename, "rb")
 >   File "C:\Python30\lib\io.py", line 222, in open
 >     closefd)
 >   File "C:\Python30\lib\io.py", line 615, in __init__
 >     _fileio._FileIO.__init__(self, name, mode, closefd)
 > IOError: [Errno 13] Permission denied: 'C:\\Documents and 
Settings\\Benjamin Ser
 > rato\\My Documents\\python\\backup_list'

Permission denied? How is that not clear?

Why it is denied has nothing to do with Python or zipfile. It is a file 
system problem. Appears you don't have permission to write to 
C:\\Documents and Settings\\Benjamin Serrato\\My Documents\\python\\

 >
 > The two print tests before zip_command is assigned tell me that the 
two strings are being passed to zipfile.ZipFile() correctly. The 
traceback tells me I am not calling zipfile.ZipFile() correctly. The 
error in __init__ makes me more sure of this. Last, the problem seems to 
be that I am causing my path string to have double backslashes. I can't 
follow why the IOError shows that.

Python displays \ as \\ since \ is used as an escape character. There is 
really just one \ in the actual string.

 >
 > I used this site to figure out how to use zipfile. zipfile is a 
class, I import it at the start of the program then I use it and its 
primary method. I pass the file I would like to write to 
zipfile.ZipFile('file to write', 'mode') and set the program to open an 
object set to be writable. Then the command writes the file to the 
destination folder with a sub-method like so, "".zipfile('files to write').
 >
 > Where am I going wrong?

First problem is posting in anything other than plain text. Please 
always use plain text. I hate having to get out my magnifying glass.





More information about the Tutor mailing list