Python - 如何在不改变结构的情况下删除复杂文件夹中的内容?

2 投票
3 回答
1109 浏览
提问于 2025-04-17 12:32

我有一个文件夹,里面有很多子文件夹,每个子文件夹里还可以有更多的子文件夹。我想删除里面的所有文件,但保持文件夹的结构不变。请问有没有现成的命令可以做到这一点,还是说我需要写一个递归函数,使用os.listdir来实现?

3 个回答

1

请查看 os.walk

import os
top = '/some/dir'
for root, dirs, files in os.walk(top):
    for name in files:
        os.remove(os.path.join(root, name))
1
import os

#check if file is hidden 
def is_hidden(filepath):
    name = os.path.basename(os.path.abspath(filepath))
    return name.startswith('.')

top = '/dir'
for root, dirs, files in os.walk(top):
    for name in files:
       #do not delete hidden files (as asked by OP in comments)
       if is_hidden(name) == false:  
          os.remove(os.path.join(root, name))

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

3

这段内容是从Python文档中抄来的,主要讲的是文件和目录的相关知识,不过这里省略了关于目录的部分:

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))

撰写回答