设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Perl | PHP | Python 脚本程序开发
›
删除空目录的难题
返回列表
查看:
540
|
回复:
4
删除空目录的难题
[复制链接]
mjovmjov
mjovmjov
当前离线
积分
60
IP卡
狗仔卡
发表于 2005-6-19 21:32:10
|
显示全部楼层
|
阅读模式
给这个函数传递 'c:/'这样的根目录时就生效了 怎么办呢 这是ms系统
>>> import os
>>> def delD(dir):
if os.path.isdir(dir):
if os.listdir(dir)!=[]:
for i in os.listdir(dir):
i=dir+'/'+i
delD(i)
else:
os.rmdir(dir)
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
chunchengfh
chunchengfh
当前离线
积分
117
IP卡
狗仔卡
发表于 2005-6-21 20:03:40
|
显示全部楼层
以前想到过这个问题的解答方法,不过偷懒, 没有在我的回复中改进,看来偷懒是不应该的。 ^_^
1. 解决办法为:
将 i=dir+'/'+i
更改为:
i=os.path.join(dir,i)
或者将
i=dir+'/'+i
delD(i)
合并为一条语句:
delD(os.path.join(dir,i))
这样处理的话,在windows和linux下均可。
2. 如果是删除 'c:/'这样的目录,请使用如下格式:
delD('C:\\') 或者
delD(r'C:\')
此时原来的 i=dir+'/'+i 不必更改。 因为在windows下也可以使用"/",和"\"的作用是一样的。
回复
支持
反对
使用道具
举报
显身卡
chunchengfh
chunchengfh
当前离线
积分
117
IP卡
狗仔卡
发表于 2005-6-21 21:24:26
|
显示全部楼层
也可将 i=dir+'/'+i
更改为:
i=dir+os.sep+i
同样可以达到跨平台的目的
回复
支持
反对
使用道具
举报
显身卡
mjovmjov
mjovmjov
当前离线
积分
60
IP卡
狗仔卡
楼主
|
发表于 2005-6-22 07:58:48
|
显示全部楼层
又发现有个毛病
就是如果一个目录下只有一个子目录且是空的
那么这个父目录是不能被删除的
要删除该怎么办呢
回复
支持
反对
使用道具
举报
显身卡
chunchengfh
chunchengfh
当前离线
积分
117
IP卡
狗仔卡
发表于 2005-6-22 13:54:10
|
显示全部楼层
将 else 删除,将 os.rmdir(dir) 少缩进一层,则原来的程序可以删除你提供的目录下所有的空目录;
如果此时自身为空,也将被删除。
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表