このコードが失敗する理由を教えてください。私は初心者で、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"'
割り当てられる前の 2 つの印刷テストzip_command
は、2 つの文字列がzipfile.ZipFile()
正しく渡されていることを示しています。zipfile.ZipFile()
トレースバックは、正しく呼び出していないことを示しています。のエラー__init__
により、これがより確実になります。最後に、問題は、パス文字列に二重のバックスラッシュが含まれていることです。IOError がそれを示している理由を理解できません。
使い方はこちらのサイトを参考にしましたzipfile
。 zipfile
はクラスです。プログラムの開始時にインポートしてから、それとその主要なメソッドを使用します。書き込みたいファイルを渡し、zipfile.ZipFile('file to write', 'mode')
書き込み可能に設定されたオブジェクトを開くようにプログラムを設定します。次に、コマンドは、次のようなサブメソッドを使用してファイルを宛先フォルダーに書き込みます"".zipfile('files to write')
。
どこが間違っていますか?