我有一个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上完美运行,但它在我的主页框(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
.