请告诉我为什么此代码失败。我是新手,我不明白为什么我的 zip 参数格式不正确。由于我不确定如何最好地沟通,所以我将展示代码、错误消息以及我认为正在发生的事情。
#!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
我收到此错误消息:
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"'
分配之前的两个打印测试zip_command
告诉我这两个字符串被zipfile.ZipFile()
正确传递。回溯告诉我我没有zipfile.ZipFile()
正确调用。中的错误__init__
使我更加确定这一点。最后,问题似乎是我导致我的路径字符串有双反斜杠。我不明白为什么 IOError 显示了这一点。
我用这个网站来弄清楚如何使用zipfile
. zipfile
是一个类,我在程序开始时导入它,然后使用它和它的主要方法。我传递了我想写入的文件并将zipfile.ZipFile('file to write', 'mode')
程序设置为打开一个设置为可写的对象。然后该命令使用类似这样的子方法将文件写入目标文件夹,"".zipfile('files to write')
.
我哪里错了?