Veuillez me dire pourquoi ce code échoue. Je suis nouveau et je ne comprends pas pourquoi ma mise en forme de mes arguments zip est incorrecte. Puisque je ne sais pas comment communiquer le mieux, je vais montrer le code, le message d'erreur, et ce que je crois se passe.Python 3: mise en forme correcte des arguments du module zip (newb)
#!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')
enter code here
je reçois ce message d'erreur:
Enter a comment -->
"C:\Documents and Settings\Benjamin Serrato\My Documents\python\backup_dir\20090
405\134614.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 683, in __init__
self.fp = io.open(file, modeDict[mode])
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 22] Invalid argument: '"C:\\Documents and Settings\\Benjamin Ser
rato\\My Documents\\python\\backup_dir\\20090405\\134614.zip"'
Les deux tests d'impression avant zip_command
est assigné me dire que les deux chaînes sont transmises à zipfile.ZipFile()
correctement. La traceback me dit que je n'appelle pas zipfile.ZipFile()
correctement. L'erreur dans __init__
me rend plus sûr de cela. Enfin, le problème semble être que ma chaîne de chemin a deux antislashs. Je ne peux pas comprendre pourquoi IOError le montre. J'ai utilisé this site pour savoir comment utiliser zipfile
. zipfile
est une classe, je l'importe au début du programme puis je l'utilise et sa méthode principale. Je passe le fichier que je voudrais écrire à zipfile.ZipFile('file to write', 'mode')
et définir le programme pour ouvrir un ensemble d'objets à écrire. Ensuite, la commande écrit le fichier dans le dossier de destination avec une sous-méthode similaire, "".zipfile('files to write')
.
Où est-ce que je me trompe?
Je ne sais pas exactement quels devis vous avez supprimés et lesquels vous n'avez pas; pouvez-vous éditer votre message pour montrer l'état actuel du code, et quelle erreur voyez-vous maintenant? – DNS