杨东明 发表于 2021-6-24 17:01:42

请问这个为啥没有报异常。。

os.removedirs('D:\\python3\\--\\-')

nahongyan1997 发表于 2021-6-24 17:01:43

本帖最后由 nahongyan1997 于 2021-6-24 20:54 编辑

杨东明 发表于 2021-6-24 20:41
python3不空删了的话也不对,不是说的报错吗

不是没出现 error,是error被python无视了,如果你想捕捉还是有办法捕捉到的,同样的error 还有 迭代器,迭代器在最后一个元素被 for 循环索引后也会出现一个 error ,这个error是用来告诉
for 循环已经没有元素可以叠戴的信号,所以不会报错,

os.removedirs 的 error 与迭代器同理,他只是一个信号,而不会引发错误,目录不存在的错误,和这个error并不是同一个。。。。 (其实小甲鱼老师的课里是有教的!)

杨东明 发表于 2021-6-24 17:03:34

removedirs(path)
递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常


python3里面不是空的不应该报异常吗?-- 和- 是我建的两个空文件夹,为啥运行后删除了-- 和 -没报错,父文件夹不应该是python3吗?

nahongyan1997 发表于 2021-6-24 17:04:21

你电脑里还是有这个文件夹呗,要是没有不可能不报错

hrpzcf 发表于 2021-6-24 17:31:04

重点是"从子目录到父目录逐层尝试"
先删-
再删--
最后删python3
所以它尝试删除的时候每个目录里都是空的,除非-目录里还有东西

nahongyan1997 发表于 2021-6-24 17:58:51

因为他是从里往外删除

杨东明 发表于 2021-6-24 20:27:04

hrpzcf 发表于 2021-6-24 17:31
重点是"从子目录到父目录逐层尝试"
先删-
再删--


python3是python文件的安装目录,一堆东西,最后运行python3没删也没报错

杨东明 发表于 2021-6-24 20:29:56

nahongyan1997 发表于 2021-6-24 17:58
因为他是从里往外删除

从里往外删,为啥删到python3不报错了。。?不是说的非空会报错吗

杨东明 发表于 2021-6-24 20:30:50

hrpzcf 发表于 2021-6-24 17:31
重点是"从子目录到父目录逐层尝试"
先删-
再删--


import os
>>> os.makedirs('D:\\python3\\--\\-')
>>> os.removedirs('D:\\python3\\--\\-')

我又试了试,一下还是不报错,python3也不删

nahongyan1997 发表于 2021-6-24 20:34:39

杨东明 发表于 2021-6-24 20:29
从里往外删,为啥删到python3不报错了。。?不是说的非空会报错吗

我这里怎么把python3给删了呢。

杨东明 发表于 2021-6-24 20:40:39

nahongyan1997 发表于 2021-6-24 20:34
我这里怎么把python3给删了呢。

python3你建的空的话会删,我的是python的安装目录,里面一堆东西。。

杨东明 发表于 2021-6-24 20:41:32

nahongyan1997 发表于 2021-6-24 20:34
我这里怎么把python3给删了呢。

python3不空删了的话也不对,不是说的报错吗

杨东明 发表于 2021-6-24 20:42:53

nahongyan1997 发表于 2021-6-24 20:34
我这里怎么把python3给删了呢。

>>>os.listdir('D:\\python3')
>>>['1', 'DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python37.dll', 'pythonw.exe', 'Scripts', 'tcl', 'Tools', 'vcruntime140.dll']

杨东明 发表于 2021-6-24 20:49:30

nahongyan1997 发表于 2021-6-24 20:43
python3里面的文件夹已经被删光了 python3 怎么就不是空的了呢,你别忘了os.removedirs 是递归删除不是 ...

你的python3是空的,所以删完了也是对的,我是说我的python3里面一堆东西,就是假设你的python3也有东西,你的删掉了也不符合removedirs的说法

杨东明 发表于 2021-6-24 20:51:02

nahongyan1997 发表于 2021-6-24 20:43
python3里面的文件夹已经被删光了 python3 怎么就不是空的了呢,你别忘了os.removedirs 是递归删除不是 ...


>>> os.makedirs('D:\\新建文件夹\\新建文件夹\\新建文件夹\\新建文件夹')
>>> os.removedirs('D:\\新建文件夹\\新建文件夹\\新建文件夹\\新建文件夹')

这全是空文件夹,运行完所有新建文件夹一个都没有了,也就是删到底了,照理来说python3也在删除范围内,但是里面不是空的(我的),也应该报错

nahongyan1997 发表于 2021-6-24 20:53:05

杨东明 发表于 2021-6-24 20:51
>>> os.makedirs('D:\\新建文件夹\\新建文件夹\\新建文件夹\\新建文件夹')
>>> os.removedirs('D:\\新 ...

再看一遍

杨东明 发表于 2021-6-24 20:54:38

nahongyan1997 发表于 2021-6-24 20:53
再看一遍

杨东明 发表于 2021-6-24 20:55:39

nahongyan1997 发表于 2021-6-24 20:53
再看一遍

不懂{:9_220:}

nahongyan1997 发表于 2021-6-24 20:55:40

杨东明 发表于 2021-6-24 20:54


难道我说的还不够清楚吗{:10_306:}{:10_247:}

nahongyan1997 发表于 2021-6-24 20:57:20

杨东明 发表于 2021-6-24 20:55
不懂

就是说这个error就算出现了也不会引发异常,除非你手动捕获,Are you OK?
页: [1] 2
查看完整版本: 请问这个为啥没有报异常。。