Lire .tar.gz fichier en Python
J'ai un fichier texte de 25 GO. donc, j'ai compressé à tar.gz et il est devenu 450 MO. maintenant, je veux lire ce fichier à partir de python et de traiter les données de texte.pour cela, j'ai appelé question . mais dans mon cas, le code ne fonctionne pas. le code est comme suit :
import tarfile
import numpy as np
tar = tarfile.open("filename.tar.gz", "r:gz")
for member in tar.getmembers():
f=tar.extractfile(member)
content = f.read()
Data = np.loadtxt(content)
l'erreur est comme suit :
Traceback (most recent call last):
File "dataExtPlot.py", line 21, in <module>
content = f.read()
AttributeError: 'NoneType' object has no attribute 'read'
aussi, Est-il une autre méthode pour effectuer cette tâche ?
Quelque chose comme stackoverflow.com/q/33113600/1240268
Si le membre est rien de ce qui précède, il n'en est retourné., le membre n'est pas un fichier ou un lien.
Si le membre est rien de ce qui précède, il n'en est retourné., le membre n'est pas un fichier ou un lien.
OriginalL'auteur KrunalParmar | 2016-05-27
Vous devez vous connecter pour publier un commentaire.
La docs nous dire que Aucun est retourné par extractfile() si le membre n'est pas un fichier régulier ou un lien.
Une solution possible est de passer sur le Aucun résultats:
OriginalL'auteur Raymond Hettinger
tarfile.extractfile()
pouvez retournerNone
si le membre n'est ni un fichier, ni un lien. Par exemple, votre archive tar peut contenir des répertoires ou des fichiers de périphériques. Pour corriger:OriginalL'auteur mhawke
Vous pouvez essayer celui-ci
Changé. Merci pour votre rappel.
OriginalL'auteur VICTOR
On ne peut pas "lire" le contenu de certains fichiers spéciaux tels que des liens encore goudron soutient et tarfile extrait de leur bien-être. Lorsque
tarfile
extraits, il ne retourne pas un fichier comme objet, mais Aucun. Et vous obtenez une erreur parce que votre archive contient un fichier spécial.Une approche consiste à déterminer le type d'une entrée dans une archive en cours de traitement avant de l'extraire: avec cette information en main, vous pouvez décider si vous pouvez ou non de "lire" le fichier. Vous pouvez atteindre cet objectif en appelant
tarfile.getmembers()
retournetarfile.TarInfo
s qui contiennent des informations détaillées sur le type de fichier contenu dans l'archive.La
tarfile.TarInfo
classe a tous les attributs et méthodes, vous devez déterminer le type de goudron membre commeisfile()
ouisdir()
outinfo.islnk()
outinfo.issym()
et ensuite en conséquence de décider quoi faire avec chaque membre (extrait ou pas, etc).J'ai par exemple les utiliser pour tester le type de fichier dans ce corrigé tarfile de sauter de l'extraction des fichiers spéciaux et liens de processus d'une manière spéciale:
OriginalL'auteur Philippe Ombredanne