2017-09-08 4 views
0

Je suis un peu confus au sujet d'une erreur que je reçois lors de l'utilisation h5py. J'essaie d'appliquer un script python pour faire défiler des ensembles de fichiers h5py situés dans des répertoires différents. Par exemple, le premier ensemble de fichiers h5py est situé àh5py OSError: Impossible d'ouvrir le fichier (signature de fichier non trouvé)

Reduced/rho=0.75/2/Data/snapshots

Quand je lance le script python de un sous-répertoire de réduction

Reduced/test_h5py

avec le script python suivant

import h5py 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.colors as colors    
import cmocean 
import os 

de.logging_setup.rootlogger.setLevel('ERROR') 


# Plot writes                               

path = '../rho=0.75/2/Data/snapshots' 
for filename in os.listdir(path): 
    with h5py.File(path+'/'+filename,'r') as file: 

tout fonctionne bien, le script boucle à travers les données et me donne une sortie. Maintenant, la question se pose lorsque je tente d'appliquer le même script python à d'autres données iE à l'ensemble des fichiers h5py situés à

Reduced/rho=0.75/4/Data/snapshots

Maintenant, quand je lance le script python précédent avec juste une modification dans le chemin de 2 à 4

import h5py 
import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib.colors as colors    
import cmocean 
import os 

de.logging_setup.rootlogger.setLevel('ERROR') 


# Plot writes                               

path = '../rho=0.75/4/Data/snapshots' 
for filename in os.listdir(path): 
    with h5py.File(path+'/'+filename,'r') as file: 

Je reçois l'erreur suivante

Traceback (most recent call last): 
    File "newest_edit.py", line 17, in <module> 
    with h5py.File(path+'/'+filename,'r') as file: 
    File "/usr/local/lib/python3.5/site-packages/h5py/_hl/files.py", line 269, in __init__ 
    fid = make_fid(name, mode, userblock_size, fapl, swmr=swmr) 
    File "/usr/local/lib/python3.5/site-packages/h5py/_hl/files.py", line 99, in make_fid 
    fid = h5f.open(name, flags, fapl=fapl) 
    File "h5py/_objects.pyx", line 54, in h5py._objects.with_phil.wrapper 
    File "h5py/_objects.pyx", line 55, in h5py._objects.with_phil.wrapper 
    File "h5py/h5f.pyx", line 78, in h5py.h5f.open 
OSError: Unable to open file (file signature not found) 

quelqu'un peut-il donner un sens à ce sujet? J'ai pensé qu'il pourrait s'agir d'une erreur os.listdir() mais après la recherche, je n'ai rien trouvé pour résoudre le problème. Merci de votre aide.

EDIT:

j'oublié de mentionner. Lorsque je lance le script python dans un carnet Jupyter et que j'applique le script à des fichiers h5py individuels, cela fonctionne très bien pour les chemins 2 et 4. Les fichiers h5py s'ouvrent et je peux récupérer les données stockées sur eux, donc je ne peux pas imaginer que ce serait des fichiers corrompus ou non au format hdf5.

+0

le message La signature de fichier introuvable indique que le fichier est corrompu ou non au format HDF5 –

+0

@Fady Saad Désolé, j'ai oublié de le mentionner.Quand j'exécute le script python dans un cahier Jupyter et que j'applique le script à des fichiers h5py individuels, ça marche très bien, les fichiers h5py s'ouvrent et je peux récupérer des données, donc je ne peux pas imaginer que ce soit des fichiers corrompus au format hdf5. – Mattos

Répondre

0

Je ne sais pas vraiment ce que je parle ici désolé d'avance si cela n'a pas de sens ou de l'aide ou tout simplement n'est pas lié.

Il est une erreur extrêmement ennuyeux que personne n'a tenté de répondre à plus d'un an, donc je pensais que le petit peu de connaissances que j'ai peut aider.

J'ai eu un problème similaire, tout en travaillant sur un cluster. Il est avéré que h5py utilise quelque chose appelé flock() et que cela peut parfois avoir un effet négatif sur la performance du système de fichiers. Pour cette raison, flock() est parfois interdit.

Si vous travaillez sur un système de fichiers de quelqu'un d'autre, demandez à admin s'ils le laisseront passer et sinon je ne trouverai pas de solution (je n'ai pas essayé de trouver d'autres bibliothèques qui n'utilisent pas flock()).

S'il est votre propre système de fichiers, alors vous devriez être en mesure de permettre flock() mais je ne sais pas comment faire. This peut vous aider si c'est NFS

Je serais certainement intéressé d'entendre comment vous vous en êtes?