[英]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 结束
你能告诉我我的代码有什么问题吗? 任何帮助表示赞赏。
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.