J'appelle la commande zip à partir d'un script où je ne peux pas changer de répertoire. J'ai besoin de créer un fichier zip à data/kit123/
partir du répertoire dans lequel les données résident, mais je veux que le contenu du zip soit uniquement le contenu de kit123
, avec des chemins relatifs à kit123
.
Ceci est la structure du répertoire
myworkingdir
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
...
kit124
...
Mon script s'exécute dans myworkingdir et ne peut pas changer de répertoire.
Si j'appelle
zip -r kit123.zip data/kit123
alors la structure du fichier zip sera
data
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
mais je veux que ce soit
kit123
kitpart1
file.xcf
anotherfile.xcf
kitpart2
Existe-t-il une option zip que je peux utiliser pour accomplir cela? Il semble étrange que cela dépende de mon répertoire de travail
Je sais que ce n'est pas -j. que l'on détruit la structure dans kit123
command-line
zip
Nathan
la source
la source
zipfile.write(arcname=
permet btw: docs.python.org/3.6/library/zipfile.html#zipfile.ZipFile.writeRéponses:
Comme vous le notez dans les commentaires, vous savez maintenant comment changer de répertoire avec votre script, je vais vous expliquer la situation avec zip concernant les chemins relatifs.
Il est probablement plus facile d'ouvrir le terminal et
cd
dekit123
; vous devez faire du répertoire cible votre répertoire de travail - vous ne pouvez pas exécuter la commande à partir de la base de votre répertoire personnel ou il récupérera tous les chemins de/home/$USER/..
Si vous utilisez l'-j
option, il supprimera tous les chemins, comme il n'y en a pas 't vraiment un équivalent de l'option tar--strip
avec laquelle différents niveaux de suppression de chemin peuvent être spécifiés.Veuillez donc cd dans votre répertoire cible (
kit123
) et entrez:Ceci
-r
conservera récursivement ( ) tous les*
fichiers ( ) et répertoires de fichiers dans le répertoire courant (kit123
), et comme les chemins relatifs (-p
) sont préservés automatiquement à moins que l'-j
option ne soit présente, la structure du répertoire sera comme vous le souhaitez.Kit123
et des sous-dossiers (kitpart1
) avec leurs propres fichiers seront présents:Vous pouvez vérifier le contenu du fichier zip avec
unzip -l zipfile.zip
.Pour plus d'informations sur les autres options disponibles pour
zip
, voirman zip
et la page de manuel Ubuntu en ligne .la source