このコードが失敗する理由を教えてください。私は新しく、なぜ私のZIP引数の書式設定が間違っているのかわかりません。私は最良のコミュニケーション方法がわからないので、コード、エラーメッセージ、および私は何が起こっていると信じて表示されます。 zip_command
前Python 3:ZIPモジュール引数を正しくフォーマットする(newb)
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つの印刷テストは、2つの文字列が正しくzipfile.ZipFile()
に渡されていることを教えて割り当てられます。
#!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
が、私はこのエラーメッセージを受け取ります。トレースバックは私にzipfile.ZipFile()
を正しく呼んでいないと伝えます。 __init__
のエラーが私にこれをより確実にしてくれます。最後に、問題は、パス文字列に二重バックスラッシュを付けることになっているようです。私はIOErrorがそれを示す理由に従うことができません。
this siteを使用して、zipfile
の使い方を解説しました。 zipfile
はクラスで、私はプログラムの始めにそれをインポートし、次にそれをその主なメソッドとして使用します。書き込みたいファイルをzipfile.ZipFile('file to write', 'mode')
に渡し、書き込み可能に設定されたオブジェクトを開くようにプログラムを設定します。次に、このコマンドは、サブフォルダとして"".zipfile('files to write')
のようなサブメソッドを使用してファイルを宛先フォルダに書き込みます。
どこが間違っていますか?
削除した引用符と削除していない引用符が明確ではありません。現在のコードの状態を表示するためにあなたの投稿を編集できますか?そして、今見ているエラーは何ですか? – DNS