先上代码:
def remove_file_or_dir(base_path, file_or_dir_names, log_tag='common'):
print(f"{log_tag} Start deleting files: {file_or_dir_names} - {base_path}")
for name in file_or_dir_names:
full_file_path = f"{base_path}/{name}"
try:
if os.path.isdir(full_file_path):
shutil.rmtree(full_file_path)
else:
os.remove(full_file_path)
except OSError as e:
print(f"{log_tag} Error deleting: {full_file_path} - {e}")
下面是对代码的总结:
- 函数接受三个参数:
base_path(基础路径)
、file_or_dir_names(要删除的文件或文件夹的名称列表)
和可选参数 log_tag(日志标签,默认为 'common')
。 - 使用
f-string
来拼接打印信息,打印要删除的文件或文件夹的名称和基础路径。
在一个循环中,对于给定的每个名称,构建完整的文件路径 full_file_path
,通过将基础路径和名称拼接而成。 - 使用
os.path.isdir()
函数检查 full_file_path
是否为文件夹。如果是文件夹,则使用 shutil.rmtree()
函数递归地删除整个文件夹及其内容。 - 如果
full_file_path
不是文件夹,而是一个文件,则使用 os.remove()
函数删除该文件。 - 在删除过程中,捕获可能出现的
OSError
异常,打印错误信息。