python - os.path.isfile 没有按预期工作

标签 python

我正在尝试扫描我的硬盘以查找 jpg 和 mp3 文件。

我已经编写了以下脚本,如果我将根目录中包含文件的目录传递给它,它就可以工作,但如果我将根目录传递给它,则不会返回任何内容。

我是 Python 的新手,所以希望得到一些帮助。

def findfiles(dirname,fileFilter):

    filesBySize = {}

    def filterfiles(f):
        ext = os.path.splitext(f)[1][1:]
        if ext in fileFilter:
            return True
        else:
            False

    for (path, dirs, fnames) in os.walk(dirname):
        if len(fileFilter)>0:
            fnames = filter(filterfiles,fnames)

        d = os.getcwd()
        os.chdir(dirname)      
        for f in fnames:
            if not os.path.isfile(f) :
                continue

            size = os.stat(f)[stat.ST_SIZE]
            if size < 100:
                continue
            if filesBySize.has_key(size):
                a = filesBySize[size]
            else:
                a = []
                filesBySize[size] = a
            a.append(os.path.join(dirname, f))
          #  print 'File Added: %s' %os.path.join(dirname,f)
            _filecount = _filecount + 1
        os.chdir(d)

    return filesBySize

最佳答案

啊是的。

您正在调用 os.path.isfile(f),其中 fpath 中的文件名。您需要提供一个绝对 路径。如果确实需要此调用(它应始终返回 True)。

尝试将您的 for 循环更改为:

    qualified_filenames = (os.path.join(path, filename) for filename in fnames)
    for f in qualified_filenames:

你应该准备好了!

此外,不需要调用 os.chdir()

而且,正如我在评论中建议的那样,filterfiles 应该看起来更像这样:

def filterfiles(f):
    ext = os.path.splitext(f)[1][1:]
    return ext in fileFilter

(您错过了一个返回)。

关于python - os.path.isfile 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8959187/

相关文章:

python - 正则表达式每隔三个字符插入一个空格,行尾除外

python - Python 中使用 ZSI 的 Web 服务客户端 - "Classless struct didn' t 获取字典”

python - Pandas df 中每个用户的两个事件行之间的时间差

python - 未识别的图像错误 : cannot identify image file

python - Jupyter Notebook 超时等待 Chrome 中的响应

python - 尝试在未配置 API 客户端的情况下使用服务客户端工厂

python - 使用 --oauth_refresh_token 更新时 appcfg.py 返回未经授权的客户端

python - 值错误 : array is too big

python - GCP Dataflow + Apache Beam - 缓存问题

python - 将字典传递给具有 base_estimator 特征的 sklearn 分类器