2016-05-04 2 views
1

У меня есть папка, которая включает в себя файлы ".gz".OSError: [Errno 2] Нет такого файла или каталога в Python при чтении файла «gz»

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] 

Когда я хочу, чтобы прочитать размеры, я получаю такую ​​ошибку:

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

Где эта умная проблема?

+2

Удивительная проблема, но у меня есть только советы для вас, чтобы улучшить свой цикл: 'для файла в onlyfiles:' 'печать (файл); size.append (os.path.getsize (файл)); print (size [-1]) '- это итерация непосредственно над элементами списка, а не индексы, которые обычно являются способом перехода на Python. –

+1

Не похоже, что вы фактически добавляете свой объединенный путь в список, просто f. Это то, что вы хотите? – xthestreams

ответ

2

Ваш onlyfiles содержит имя файла, а не полные пути к ним. (и ваш рабочий каталог, похоже, не mypath).

Вы либо должны исправить onlyfiles создания: onlyfiles = [join(mypath, f) for f in listdir(mypath) if isfile(join(mypath, f))]

или вы можете также os.chdir(mypath) перед вашим 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) 

попробовать это это работает для меня

Смежные вопросы