我有一个任务,我想检查目录中是否存在特殊文件 *.part。 如果文件存在则再次检查,如果不存在,则打印“文件已删除”。
我使用 os.listdir(),接下来对于 lisdir 中的每个文件,我使用 fnmatch(file, '*.part'),接下来再次获取 lisdir 并递归地涉及相同的函数。
当我删除此文件时,fnmatch 返回“true”。我不明白......“为什么”?
这是我的代码:
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")
谢谢!
最佳答案
即使您递归地调用函数 func
,第一次迭代中的 f
也不会改变,而 fnmatch
仅检查字符串,如果文件存在。
使用os.path.exists
:
导入操作系统、fnmatch、时间
def func(filenames):
for f in filenames:
if fnmatch.fnmatch(f, '*.part'):
# wait until deleted
while os.path.exists(f):
time.sleep(0.1)
关于Python fnmatch,检查存在的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41362151/