首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >目录遍历和删除文件/目录

目录遍历和删除文件/目录
EN

Stack Overflow用户
提问于 2021-02-27 16:29:38
回答 1查看 556关注 0票数 1

我将大量的文件复制到一个现有的目录中,并且我需要反转这个操作。目标目录包含许多其他文件,我需要保留这些文件,这样就不可能简单地从目录中删除所有文件。我可以用Python做这件事。下面是剧本:

代码语言:javascript
复制
import os, sys, shutil

source = "/tmp/test/source" 
target = "/tmp/test/target" 


for root, dirs, files in os.walk(source): # for files and directories in source
    for dir in dirs:
        if dir.startswith("."):
            print(f"Removing Hidden Directory: {dir}")
        else: 
            print(f"Removing Directory: {dir}")
        try:
            shutil.rmtree(f"{target}/{dir}") # remove directories and sub-directories
        except FileNotFoundError:
            pass

    for file in files:
        if file.startswith("."): # if filename starts with a dot, it's a hidden file
            print(f"Removing Hidden File: {file}")
        else:
            print(f"Removing File: {file}")
        try:
            os.remove(f"{target}/{file}") # remove files        
        except FileNotFoundError:
            pass

print("Done")

上面的脚本位于原始(源文件)目录中,并列出了这些文件。然后查看将文件复制到(目标)的目录,并只删除所列出的文件,因为它们存在于源目录中。

我怎么才能在围棋里做同样的事?我尝试了filepath.WalkDir(),但正如文档中所述:

WalkDir遍历根根目录下的文件树,为树中的每个文件或目录(包括根)调用fn。

如果WalkDir()包含根目录,那么os.Remove()或os.RemoveAll()将删除全部内容。

EN

回答 1

Stack Overflow用户

发布于 2021-02-27 17:36:22

Cerise Limon回答。使用os.ReadDir读取目录条目的源代码。对于每个条目,os.RemoveAll对应的目标文件

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

https://stackoverflow.com/questions/66400922

复制
相关文章

相似问题

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