首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在os.path.isfile()中使用通配符

在os.path.isfile()中使用通配符
EN

Stack Overflow用户
提问于 2010-11-28 17:15:29
回答 7查看 74.7K关注 0票数 55

我想检查一下目录中是否有.rar文件。它不需要是递归的。

os.path.isfile()中使用通配符是我最好的猜测,但它不起作用。那我能做什么呢?

EN

回答 7

Stack Overflow用户

发布于 2010-11-28 17:17:26

glob就是您所需要的。

代码语言:javascript
复制
>>> import glob
>>> glob.glob('*.rar')   # all rar files within the directory, in this case the current working one

如果路径是现有的常规文件,则os.path.isfile()返回True。因此,它用于检查文件是否已经存在并且不支持通配符。glob就是这样。

票数 98
EN

Stack Overflow用户

发布于 2010-11-29 01:12:37

如果不使用os.path.isfile(),您将不知道glob()返回的结果是文件还是子目录,因此尝试如下所示:

代码语言:javascript
复制
import fnmatch
import os

def find_files(base, pattern):
    '''Return list of files matching pattern in base folder.'''
    return [n for n in fnmatch.filter(os.listdir(base), pattern) if
        os.path.isfile(os.path.join(base, n))]

rar_files = find_files('somedir', '*.rar')

如果愿意,您还可以只过滤glob()返回的结果,这样做的好处是可以做一些与unicode相关的额外工作。如果重要的话,请检查glob.py中的源代码。

代码语言:javascript
复制
[n for n in glob(pattern) if os.path.isfile(n)]
票数 15
EN

Stack Overflow用户

发布于 2010-11-28 17:23:11

代码语言:javascript
复制
import os
[x for x in os.listdir("your_directory") if len(x) >= 4 and  x[-4:] == ".rar"]
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4296138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档