繁体   English   中英

为什么 os.listdir 在我将文件设置到目录时显示到文件中?

[英]Why is os.listdir showing to a file while I set it to the directory?

所以,我正在制作一个 python 项目,该项目删除目录中的文件,我的代码是:

    tmp_dir = r"C:\Users\User\AppData\Roaming\Microsoft\Teams\tmp"
    tmp_list = os.listdir(tmp_dir)

    for tmp_files in tmp_list:
        shutil.rmtree(os.path.join(tmp_dir, tmp_files))

我收到以下错误:

回溯(最后一次调用):文件“<我的程序的位置>”,第 9 行,在 shutil.rmtree(os.path.join(tmp_dir, tmp_files)) 文件“C:\Users\User\AppData\Local\Programs \Python\Python39\lib\shutil.py”,第 737 行,在 rmtree 中返回 _rmtree_unsafe(path, onerror) 文件“C:\Users\User\AppData\Local\Programs\Python\Python39\lib\shutil.py”,第 596 行,在 _rmtree_unsafe onerror(os.scandir, path, sys.exc_info()) 文件“C:\Users\User\AppData\Local\Programs\Python\Python39\lib\shutil.py”中,第 593 行,在 _rmtree_unsafe使用 os.scandir(path) as scandir_it: NotADirectoryError: [WinError 267] 目录名称无效:'C:\Users\User\AppData\Roaming\Microsoft\Teams\tmp\x64.json'

进程以退出代码 1 结束

你能告诉我我的代码有什么问题吗? 任何帮助表示赞赏。

shutil.rmtree删除整个目录树

要删除单个文件,您可以使用os.remove

os.listdir返回给定路径中的所有文件和目录。 如果要删除所有目录,可以使用os.path.isdir进行过滤,然后只删除目录。

您可以尝试使用此代码获取给定文件夹中的所有目录:

tmp_list = [d for d in os.listdir(tmp_dir) if os.path.isdir(os.path.join(tmp_dir, d))]

os.listdir 列出文件和文件夹

您正在执行的 rmtree 仅适用于文件夹

所以当迭代到达一个文件时,它会给出错误

对于文件夹和文件,您需要执行以下操作

for temp_files in temp_list :
    if temp_files.isdir():
        shutil.rmtree(os.path.join(tmp_dir, tmp_files))
    else :
        os.remove("file path/filename")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM