Substitua os arquivos somente leitura existentes ao usar o tarfile do Python
Estou tentando usar o módulo tarfile do Python para extrair um arquivo tar.g
Gostaria que a extração substituísse qualquer arquivo de destino que ele já exista - esse é o comportamento normal do tarfil
o entanto, estou acertando em cheio que alguns dos arquivos têm proteção contra gravação (por exemplo, chmod 550
Otarfile.extractall()
operação realmente falha:
IOError: [Errno 13] Permission denied '/foo/bar/file'
Se eu tentar excluir os arquivos da linha de comando normal, posso fazê-lo, só preciso responder uma solicitação:
$ rm <filename>
rm: <filename>: override protection 550 (yes/no)? yes
O utilitário tar normal do GNU também lida com esses arquivos sem esforço - apenas os substitui quando você extra
Meu usuário é o proprietário dos arquivos, portanto, não seria difícil chmod recursivamente os arquivos de destino antes de executar o tarfile.extractall. Ou posso usar shutil.rmtree para afastar o alvo de antemão, que é a solução alternativa que estou usando agora. No entanto, isso parece um pouco tol
Existe uma maneira mais Pythonic de manipular arquivos somente leitura no tarfile, usando exceções ou algo semelhant