首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python fnmatch,检查exist文件。

Python fnmatch,检查exist文件。
EN

Stack Overflow用户
提问于 2016-12-28 12:26:53
回答 2查看 479关注 0票数 1

我有一项任务,我想检查目录中是否存在特殊文件*.part。如果文件存在,请再次检查,否则,打印“文件被删除”。

我使用os.listdir(),接下来对lisdir中的每个文件使用fnmatch( file,'*.part'),然后再次获取lisdir并递归地涉及相同的函数。

当我删除这个文件时,fnmatch返回"true“。我不明白..。“为什么”?

这里我的代码:

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

def func(filenames):
      for f in filenames:
            while fnmatch.fnmatch(f, '*.part'):
                  filenames = os.listdir("/home/gromov/Downloads/test/")
                  func(filenames)


if __name__ == "__main__":
      func(os.listdir("/home/gromov/Downloads/test/"))
      print("file was deleted")

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-28 12:47:03

即使递归调用函数func,第一次迭代中的f也不会改变,如果文件存在,fnmatch只检查字符串,而不检查字符串。

使用os.path.exists:导入os、fnmatch、time

代码语言:javascript
复制
def func(filenames):
    for f in filenames:
        if fnmatch.fnmatch(f, '*.part'):
            # wait until deleted
            while os.path.exists(f):
                time.sleep(0.1)
票数 0
EN

Stack Overflow用户

发布于 2016-12-28 12:34:18

您正在使用递归,可能您从os.listdir()获得的文件列表每次都会返回相同的文件列表,因此在更新之前返回一个True。

试着用非递归的方式编写它,并确保从os.listdir()检索的列表不是每次迭代时相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41362151

复制
相关文章

相似问题

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