我将大量的文件复制到一个现有的目录中,并且我需要反转这个操作。目标目录包含许多其他文件,我需要保留这些文件,这样就不可能简单地从目录中删除所有文件。我可以用Python做这件事。下面是剧本:
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()将删除全部内容。
发布于 2021-02-27 17:36:22
由Cerise Limon回答。使用os.ReadDir读取目录条目的源代码。对于每个条目,os.RemoveAll对应的目标文件
https://stackoverflow.com/questions/66400922
复制相似问题