我有一个任务,我要检查目录中是否存在特殊文件*.part。 如果文件存在,请再次检查,否则,打印“文件已删除”。在
我使用操作系统列表目录(),接下来对于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")
谢谢!在
您使用的是递归,可能是从中获取的文件列表操作系统列表目录()每次都返回相同的文件列表,因此在更新之前返回True。在
试着用非递归的方式写这篇文章,并确保从中检索到的列表操作系统列表目录()不是每次迭代都一样。在
即使递归地调用函数
func
,第一次迭代中的f
也不会更改,fnmatch
只检查字符串,如果文件存在,则不检查。在使用
os.path.exists
: 导入操作系统,fnmatch,时间相关问题 更多 >
编程相关推荐