FTP サイトからファイルを解凍しようとしています。サブプロセスで7zを使用するだけでなく、古いos.system形式で7zを使用してみました。ただし、Python で zipfile モジュールを使用しているときは最も近いので、それに固執することにしました。これをどのように編集しても、2 つのエラーのうちの 1 つが表示されるようです。ここに両方のエラーを示します。壁に頭をぶつけている場所がわかります。
z = zipfile.ZipFile(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
z.extractall()
NotImplementedError: 圧縮タイプ 6 (内破) (これは完全に間違っていると思いますが、含めることにしました。)
私は次のように最も近いようです:
z = zipfile.ZipFile(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
z.extractall(r"\\svr-dc\ftp site\%s\daily\data1.zip" % item)
IOError: [Errno 2] No such file or directory: '\\\\svr-dc...'
これの問題点は、実際には zip 内の最初のファイル名が表示されることです。エラーの最後にファイル AJ07242013.PRN が表示されるので、少なくとも zip ファイルの内容を読み取るところまで来ているので、より身近に感じることができます。
私が試みたほとんどすべての反復で、これら 2 つのエラーのいずれか、または構文エラーが発生しますが、これは簡単に対処でき、私の主な関心事ではありません。
長々とすみません。これを機能させたいので、何をする必要があると思うか教えてください。
編集:
そのため、最終的に 7z がパスに追加され、サブプロセスと os.system の両方でエラーなしで実行されています。しかし、私はまだ開梱するものを手に入れることができないようです。Python のドキュメントを読んだ限りでは、subprocess.communicate() モジュールを使用してこのファイルを抽出する必要があるように見えますが、解凍することはできません。os.system を使用すると、アーカイブが見つからないというメッセージが表示され続けます。
import subprocess
cmd = ['7z', 'e']
sp = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
sp.communicate('r"\C:\Users\boster\Desktop\Data1.zip"')
sp.communicate が正しいとは思いませんが、他に何かを追加すると、引数が多すぎます。