Пожалуйста, скажите, почему этот код не работает. Я новичок, и я не понимаю, почему мое форматирование моих аргументов zip неверно. Поскольку я не уверен, как лучше общаться, поэтому я покажу код, сообщение об ошибке и то, что, как я считаю, происходит.Python 3: правильно форматировать аргументы модуля 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
Я получаю сообщение об ошибке:
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.
Я использовал this site, чтобы выяснить, как использовать zipfile
. zipfile
- это класс, я импортирую его в начале программы, затем я использую его и его основной метод. Я передаю файл, который я хотел бы записать в zipfile.ZipFile('file to write', 'mode')
, и установить программу для открытия набора объектов для записи. Затем команда записывает файл в папку назначения с таким подпоследовательным способом, "".zipfile('files to write')
.
Куда я иду не так?
Я не знаю, какие цитаты вы удалили, а какие у вас нет; можете ли вы изменить свой пост, чтобы показать текущее состояние кода и какую ошибку вы видите сейчас? – DNS