2016-05-04 15 views
1

Ich habe einen Ordner, der ".gz" Dateien enthält.OSError: [Errno 2] Keine solche Datei oder Verzeichnis in Python beim Lesen "gz" Datei

import matplotlib.pylab as plt, os 

from os import listdir 
from os.path import isfile, join 

mypath = '/export/students/sait/yedek' 

onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))] 

size = [] 

for a in range(len(onlyfiles)): 
     print onlyfiles[a] 
     size.append(os.path.getsize(onlyfiles[a])) 
     print size[a] 

Wenn ich die Größen lesen wollen, bekomme ich einen solchen Fehler:

"OSError: [Errno 2] No such file or directory: 'rgb-0.ppm.gz'" 

Wo ist das Smart-Problem?

+2

Surprising Problem, aber ich habe nur einen Rat für Sie for-Schleife zu verbessern: 'für Datei in onlyfiles:' 'print (file); size.append (os.path.getsize (Datei)); print (size [-1]) '- dies iteriert direkt über den Listenelementen anstelle der Indizes, was normalerweise der Weg in Python ist. –

+1

Sieht nicht so aus, als würden Sie Ihren verbundenen Pfad zur Liste hinzufügen, nur f. Ist das was du willst? – xthestreams

Antwort

2

Ihre onlyfiles enthält den Basisnamen der Dateien, nicht die vollständigen Pfade zu ihnen. (und Ihr Arbeitsverzeichnis scheint nicht zu sein).

Sie müssen entweder onlyfiles Schöpfung beheben: onlyfiles = [join(mypath, f) for f in listdir(mypath) if isfile(join(mypath, f))]

oder Sie können auch os.chdir(mypath) vor Ihrer for -loop.

1
import matplotlib.pylab as plt, os 
from os import listdir 
from os.path import isfile, join 
mypath = os.path.join(os.getcwd(),'/export/students/sait/yedek') 
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))] 
size = [] 
for file in onlyfiles: 
     print file 
     file_size = os.path.getsize(file) 
     print file_size 
     size.append(file_size) 

versuchen, dies dies ist für mich arbeiten

Verwandte Themen