Estou chamando o comando zip de um script em que não consigo alterar o diretório. Eu preciso criar um arquivo zip do material no data/kit123/
diretório em que os dados residem, mas quero que o conteúdo do zip seja apenas o conteúdo kit123
, com caminhos relativos a kit123
.
Esta é a estrutura de diretórios
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
Meu script é executado em myworkingdir e não pode alterar diretórios.
Se eu ligar
zip -r kit123.zip data/kit123
então a estrutura no arquivo zip será
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
mas eu quero que seja
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Existe uma opção de zip que eu possa usar para fazer isso? Parece estranho que deva depender do meu diretório de trabalho
Eu sei que não é -j. aquele destrói a estrutura dentro do kit123
command-line
zip
Nathan
fonte
fonte
zipfile.write(arcname=
permite que ele btw: docs.python.org/3.6/library/zipfile.html#zipfile.ZipFile.writeRespostas:
Conforme você observa nos comentários, agora você sabe como alterar o diretório com seu script, explicarei a situação com zip em relação aos caminhos relativos.
É provavelmente mais fácil de abrir o terminal e
cd
parakit123
; você precisa tornar o diretório de destino seu diretório de trabalho - não é possível executar o comando a partir da base do diretório inicial ou ele selecionará todos os caminhos de/home/$USER/..
Se você usar a-j
opção, ele removerá todos os caminhos, pois não há é realmente um equivalente da opção tar--strip
com a qual diferentes níveis de remoção de caminho podem ser especificados.Então, vá para o diretório de destino (
kit123
) e digite:Isso
-r
preservará recursivamente ( ) todos os (*
) arquivos e diretórios dos arquivos no diretório atual (kit123
) e, como os caminhos relativos (-p
) serão preservados automaticamente, a menos que a-j
opção esteja presente, a estrutura de diretórios será a desejada.Kit123
e subpastas (kitpart1
) com seus próprios arquivos estarão presentes:Você pode verificar o conteúdo do arquivo zip com
unzip -l zipfile.zip
.Para obter mais informações sobre as outras opções disponíveis
zip
, consulteman zip
a página de manual do Ubuntu online .fonte