首页 > 解决方案 > 尝试删除多个目录时出错

问题描述

我正在尝试创建一个脚本来自动删除我处理的已关闭支持案例的目录。我想我有一个可行的解决方案,尽管我确信代码可能更漂亮。这很丑,因为我不是开发人员:

import pandas as pd
import os
import shutil

cases_dir = input("Please enter your files directory: ")
cases_list = os.listdir(cases_dir)
for name in cases_list:
    print(name, sep='\n')

open_cases = pd.read_csv(r"cases.csv")
open_cases.columns = ["Number", "Product", "Subject", "Customer Contact", "Customer Name", "State", "Internal Status", "Follow up", "Case Priority", "Updated", "Updated by", "Days open"]
open_cases = open_cases[["Number"]]
print(open_cases, sep="\n")

list_a = cases_list
list_b = open_cases
x = (set(list_a)-set(list_b))
print(sorted(x)))
shutil.rmtree(x, ignore_errors=False, onerror=None)

我从两者都得到了一个案例列表,为了简洁起见,我删除了打印声明。这是完整的错误:

Traceback (most recent call last):
  File "C:/Users/me/PycharmProjects/myproject/extract_cases.py", line 25, in <module>
    shutil.rmtree(x, ignore_errors=False, onerror=None)
  File "C:\Python37\lib\shutil.py", line 506, in rmtree
    if os.path.islink(path):
  File "C:\Python37\lib\ntpath.py", line 231, in islink
    st = os.lstat(path)
TypeError: lstat: path should be string, bytes or os.PathLike, not set

Process finished with exit code 1

谢谢你的帮助!

标签: python-3.x

解决方案


shutil.rmtree等待string或类型,但您的变量bytes是a 。os.PathLikexset

您可以使用循环遍历您的set对象for。您可以在下面看到一个示例。

代码:

x = set(list_a)-set(list_b)
print(sorted(x))
for path in x:
    shutil.rmtree(path, ignore_errors=False, onerror=None)

推荐阅读