test.txt
zip archive 内にファイルがありますtest.zip
。圧縮されていると、アクセス許可test.txt
は制御できなくなりますが、グループで書き込み可能にしたいのです。Python でファイルを抽出していますが、シェルにエスケープしたくありません。
編集: これが私がこれまでに得たものです:
import zipfile
z = zipfile.ZipFile('test.zip', 'w')
zi = zipfile.ZipInfo('test.txt')
zi.external_attr = 0777 << 16L
z.writestr(zi, 'FOO')
z.close()
z = zipfile.ZipFile('test.zip', 'r')
for name in z.namelist():
newFile = open(name, "wb")
newFile.write(z.read(name))
newFile.close()
z.close()
これは 2.5.1 を使用する OS X では完全に動作しますが、私のホーム ボックス (Debian、Python 2.4 & 2.5) または Python 2.4 を使用する RHEL 5 では動作しません。OS X 以外ではエラーにはなりませんが、パーミッションも変更されません。理由はありますか?また、どのように機能しwritestr()
ますか?私はここでそれを間違って使用していることを知っています。
これを行わずにこれを行う方法はありますか(ファイルを抽出するユーザーには、抽出後os.chmod
に使用する権限がありません)。os.chmod
zip ファイルへの完全な書き込みアクセス権があります。
より詳しい情報:
> ls -l test.zip
-rwxrwxrwx 1 myuser mygroup 2008-11-11 13:24 test.zip
> unzip test.zip
Archive: test.zip
inflating: test.txt
> ls -l test.txt
-rw-r--r-- 1 myuser mygroup 2008-11-11 13:34 test.txt
ユーザー抽出は ではなくmyuser
にありmygroup
ます。