Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按名称删除所有文件夹_Python - Fatal编程技术网

Python 按名称删除所有文件夹

Python 按名称删除所有文件夹,python,Python,我需要删除文件夹名称以tmp****开头的所有文件夹 文件夹结构示例: C:/tmp文件夹中有tmp323 tmp543 tmp922文件夹。您可能需要使用 import glob import os 在你的程序中。两者都是标准的库程序 glob将帮助您筛选 glob.glob("tmp*") 您需要使用操作系统包的一些例程来确定某个东西是否是目录 一旦你有了要删除的目录列表 for mydir in DirectoriesToDelete: os.system("rm -rf %s

我需要删除文件夹名称以tmp****开头的所有文件夹

文件夹结构示例: C:/tmp文件夹中有tmp323 tmp543 tmp922文件夹。

您可能需要使用

import glob
import os
在你的程序中。两者都是标准的库程序

glob将帮助您筛选

glob.glob("tmp*")
您需要使用操作系统包的一些例程来确定某个东西是否是目录

一旦你有了要删除的目录列表

for mydir in DirectoriesToDelete:
    os.system("rm -rf %s" %mydir)

或者类似的东西应该可以达到目的。

使用glob、os和shutil:

from os import listdir, rmdir
from os.path import isdir, join
mypath = "C:/tmp"
onlydirs = [ f for f in listdir(mypath) if isdir(join(mypath,f)) and f.startswith("tmp")]
for f in onlydirs: rmdir(join(mypath,f))
import glob, os, shutil
dirs = glob.glob("tmp*/")
for dir in dirs:
    shutil.rmtree(dir)

我听说过正则表达式,但idk知道如何在python中正确使用。如果你熟悉正则表达式,你可以使用re和glob。我见过如何使用glob查找文件,但我需要folders你只需要检查str.startswith的startswith tmp行是否正确,但你应该提供代码,让你达到这一点,使用操作系统包来判断某个东西是否是目录可能是一个好主意,而不是仅仅依赖正则表达式约定。mapos.removedirs,glob.globtmp*我真的很喜欢那种功能性的方法@Dekomote非常感谢大家。这种python非常灵活。@tipanverella我怀疑rm-rf是否能在windows机器上工作,因为OP可能不喜欢这个答案,因为它是最不粗糙的,而且不会重新发明轮子。您只需要确保在将其传递给rmtree时实际上正在处理目录,否则就没问题了。是的,您是对的。我更新了代码添加/以仅匹配目录。非常感谢。