Enable for ZipFile to specify to create archives of arbitrary windows FAT or Unix filesystem
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 77.2k
- Forks
- 35.9k
- Métriques de merge des PR
- Métriques de PR en attente
Description
Feature or enhancement
Proposal:
Hi, as dev working with app designed for both Windows, Mac and Linux systems, I had recently automating with ZipFile task of repacking some internal ZIP archives. To automate the task even more, I created formulas for each of systems to be available on single script, on single call (and so on one machine) to create packages easier.
Unfortunately generated tasks were faulty,
I noticed, that same script performed on Linux or Windows created archives of different types - FAT or UNX, therefore output files were seen as invalid on opposite system.
To make the picture, my flow was:
start on particular OS (either Windows or Linux) ==> download archive from web (fixed format, UNX or FAT) ==> unpacking archive ==> creating new archive from files from previous ==> resulting archive has format from OS, overriding input archive (while I need the exact opposite)
Could I ask You to add possibility from code to enforce archiving files by chosen system , for instance like a compression method (like I chose LZMA), like I suggest below ? Or maybe if it is dependent on the format of the not yet archived input , could a similar flag enforce unpacking file in chosen filesystem , not being dependent on the used machine and OS?
I also provide some output from zipinfo console utility.
I attach some links that hopefully might present the issue,
https://en.wikipedia.org/wiki/FAT_filesystem_and_Linux
https://forensics.wiki/zip/#external-file-attributes
Best regards and have a good day, also feel free to contact me for more info, Wiktor
class zipfile.ZipFile(file, filesystem='FAT/UNX', ...
ZipFile.write(filename, filesystem='FAT/UNX', ...
class zipfile.ZipFile(file, filesystem='FAT/UNX', ...
ZipFile.write(filename, filesystem='FAT/UNX', ...
packed on Windows
zipinfo ~/Downloads/win7.1.5_sandbox.zip
Archive: win7.1.5_sandbox.zip
Zip file size: 47379022 bytes, number of entries: 92
drwx--- 6.3 fat 0 bx stor 25-Mar-12 11:41 Debug/
....
-rwx--- 6.3 fat 20554528 bx lzma 25-Mar-11 16:17 someWinApp.exe
....
-rwx--- 6.3 fat 422168 bx lzma 25-Mar-11 16:18 someWinApp2.exe
92 files, 205285623 bytes uncompressed, 47362726 bytes compressed: 76.9%
packed on Mac
zipinfo ~/Downloads/mac7.1.4_sandbox.zip
Archive: mac7.1.4_sandbox.zip
Zip file size: 93026056 bytes, number of entries: 160
drwxr-xr-x 6.3 unx 0 bx stor 25-Feb-14 01:00 .package/
drwxr-xr-x 6.3 unx 0 bx stor 25-Feb-14 00:59 RuntimeRoots/
-rwxr-xr-x 6.3 unx 25375808 bx lzma 25-Feb-14 01:00 someApp
...
-rwxr-xr-x 6.3 unx 11167424 bx lzma 25-Feb-14 01:00 someApp2
....
-rwxr-xr-x 6.3 unx 2053072 bx someApp3
-rw-r--r-- 6.3 unx 4315 bx lzma 25-Feb-10 09:30 headerfile.h
160 files, 409689641 bytes uncompressed, 92994544 bytes compressed: 77.3%
Has this already been discussed elsewhere?
No response given
Links to previous discussion of this feature:
No response
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par les points d’entrée zipfile.ZipFile et ZipFile.write mentionnés dans la proposition, puis suivez la manière dont les métadonnées du système de fichiers sont attribuées lors de la création d’archives sous Windows, Mac et Linux. Le travail est terminé lorsque l’API peut imposer les métadonnées d’archive FAT ou Unix demandées indépendamment du système d’exploitation hôte, et que le comportement est couvert par les tests pertinents.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- operating-systems, tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100