OSError:[Errno 2]在Python中读取";gz“;文件

OSError:[Errno 2]在Python中读取";gz“;文件,python,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(

我有一个包含
“.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'"

这个智能问题在哪里?

您的
仅文件
包含文件的基本名称,而不是文件的完整路径。(您的工作目录似乎不是
mypath

您要么需要修复
仅文件
创建:

onlyfiles=[join(mypath,f)表示listdir(mypath)中的f,如果isfile(join(mypath,f))]

或者您也可以在
for
-循环之前
os.chdir(mypath)

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)

试试这个,这对我来说是一个令人惊讶的问题,但我只有一个建议可以让你改进for循环:
for file in onlyfiles:
print(file);append(os.path.getsize(文件));print(size[-1])
-这将直接在列表元素上迭代,而不是在Python中通常使用的索引。看起来您实际上并没有将连接路径添加到列表中,只是f。这是你想要的吗?