J'ai un fichier tar qui contient un certain nombre de fichiers. J'ai besoin d'écrire un script python qui va lire le contenu des fichiers et donne le nombre total de caractères, y compris le nombre total de lettres, d'espaces, de caractères de nouvelle ligne, tout, sans décompresser le fichier tar.lecture du contenu du fichier tar sans le débloquer, en script python
Répondre
vous pouvez utiliser GetMembers()
>>> import tarfile
>>> tar = tarfile.open("test.tar")
>>> tar.getmembers()
Après cela, vous pouvez utiliser extractfile() pour extraire les membres comme objet de fichier. Juste un exemple
import tarfile,os
import sys
os.chdir("/tmp/foo")
tar = tarfile.open("test.tar")
for member in tar.getmembers():
f=tar.extractfile(member)
content=f.read()
print "%s has %d newlines" %(member, content.count("\n"))
print "%s has %d spaces" % (member,content.count(" "))
print "%s has %d characters" % (member, len(content))
sys.exit()
tar.close()
Avec l'objet fichier "f" dans l'exemple ci-dessus, vous pouvez utiliser read(), readlines(), etc.
" pour un membre dans tar.getmembers() "peut être changé en" pour membre dans tar "qui est soit un générateur ou un itérateur (je ne sais pas lequel). Mais il obtient un membre à la fois. – huggie
J'ai juste eu un problème similaire, mais le module tarfile semble manger mon bélier, même si j'ai utilisé l'option '' r | ''. – devsnd
Ah. Je l'ai résolu. En supposant que vous écrivez le code comme suggéré par huggie, vous devez "nettoyer" la liste des membres de temps en temps. Donc, étant donné l'exemple de code ci-dessus, ce serait tar.members = [] '. Plus d'infos ici: http://bit.ly/JKXrg6 – devsnd
vous devez utiliser le module tarfile. Plus précisément, vous utilisez une instance de la classe tarfile pour accéder au fichier, puis accéder aux noms avec TarFile.getnames()
| getnames(self)
| Return the members of the archive as a list of their names. It has
| the same order as the list returned by getmembers().
Si au contraire vous voulez lire le contenu , vous utilisez cette méthode
| extractfile(self, member)
| Extract a member from the archive as a file object. `member' may be
| a filename or a TarInfo object. If `member' is a regular file, a
| file-like object is returned. If `member' is a link, a file-like
| object is constructed from the link's target. If `member' is none of
| the above, None is returned.
| The file-like object is read-only and provides the following
| methods: read(), readline(), readlines(), seek() and tell()
Notez, vous pouvez alors accéder au membre via un index construit comme si 'myFile = myArchive.extractfile (dict (zip (monArchive.getnames(), monArchive.getmembers())) ['chemin/vers/fichier']). read() ' – ThorSummoner
Une mise en œuvre des méthodes mentionnées par @ stefano-Borini Accédez à une archive tar membre via le nom de fichier comme tant
#python3
myFile = myArchive.extractfile(
dict(zip(
myArchive.getnames(),
myArchive.getmembers()
))['path/to/file']
).read()`
Crédits:
dict(zip(
de https://stackoverflow.com/a/209854/1695680tarfile.getnames
de https://stackoverflow.com/a/2018523/1695680- De plus, pour mes usages, la lecture d'une archive tar de tampon How to construct a TarFile object in memory from byte buffer in Python 3?
- 1. Lecture des modifications du contenu du fichier dans .NET
- 2. Lecture du fichier .doc sans lancer MSWord
- 3. Lecture du contenu du contenu de SyndicationContent
- 4. lecture du fichier en C#
- 5. Lecture du fichier depuis le même serveur
- 6. lecture partie du contenu du fichier système avec PHP
- 7. modifier le contenu du fichier
- 8. Modifier le contenu du fichier
- 9. Tri et alignement du contenu d'un fichier texte en Python
- 10. script Python lecture d'un fichier csv
- 11. Python - le contenu du fichier à la liste imbriquée
- 12. Lire le fichier sans accès en lecture en PHP
- 13. Modification du contenu du fichier XML avec Python
- 14. lecture du fichier image FAT12 en C
- 15. ICEFaces inputFile obtenir le contenu du fichier sans téléchargement
- 16. Contenu du fichier au format d'arbre en utilisant python
- 17. Indexation du contenu d'un fichier CSV en Python
- 18. Lecture du fichier de configuration sans la section Configuration
- 19. lecture du fichier XML
- 20. Lecture à partir du fichier
- 21. Copier le contenu du fichier avec sed
- 22. contenu du fichier de lecture à l'aide de C#
- 23. Obtenez Nom du fichier sans extension en Python
- 24. Variables Extension dans le contenu du fichier
- 25. Télécharger le contenu du fichier en utilisant cURL
- 26. Lecture du fichier dans le tableau
- 27. lecture double du fichier binaire en c
- 28. Lecture du fichier en cours de téléchargement
- 29. question de lecture du fichier en C++
- 30. Visual Studio Lecture du son sans fichier présent
Comment pouvez-vous compter les caractères/lettres/espaces/everthing sans extraire ceux à un autre endroit? – YOU
c'est précisément la question posée. –