我有一个test.txt
位于 zip 存档中的文件test.zip
。压缩后的权限test.txt
不在我的控制范围内,但现在我希望它们是组可写的。我正在使用 Python 提取文件,并且不想逃到 shell 中。
编辑: 这是我到目前为止所得到的:
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 上完美运行,但不适用于我的 home box(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
。