python - 使用 os.path.isfile() 删除目录
问题描述
我正在尝试创建一个函数,该函数从目录中创建所有文件和目录的列表。然后该函数将删除所有以目录开头的文件~
并删除所有目录。我相信我以某种方式os.path.isfile()
错误地使用了该函数,因为当我将其设置为 True 时,我得到一个没有任何内容的列表,当我将其设置为 false 时,我得到一个删除~
文件但保留目录的列表。
def getfiles(directory):
New_List = []
List1 = os.listdir(directory)
for i in List1:
if str.startswith(i,"~") is False and os.path.isfile(i) is True:
New_List.append(directory+"/"+i)
return New_List
解决方案
这是标准库模块的替代方案pathlib
(尽管它需要 Python 3.4+):
from pathlib import Path
def getfiles(directory):
return [o for o in Path(directory).rglob('~*') if o.isfile()]
如果您想删除这些文件:
from pathlib import Path
for o in Path(directory).rglob('~*'):
if o.isfile():
o.unlink(missing_ok=True)
或者,使用getfiles()
我们上面定义的:
for o in getfiles(directory):
o.unlink(missing_ok=True)
全部使用纯 Python 并使用标准库。
这两个示例都将扫描directory
及其子目录以查找名称以 . 开头的文件~
。如果您只想扫描directory
,请替换rglob
为glob
.
推荐阅读
- python - 当使用更高的值时,绘图的形状会扭曲
- safari - Safari 差异
- office-addins - 我的 Office Word Web 加载项不再启动。我应该怎么办?
- kubernetes - 在 Kubernetes 中使用 Sumologic 的 HPA
- java - 为什么 parallelStream() 大部分时间都在特定点开始?
- qt - 不同 QGraphicsItem 继承类的不同上下文菜单
- powershell - PowerShell 拉取正在从什么设备登录的帐户
- linux-kernel - 如何在 modules.builtin 中使用(或查找或 modprobe).ko
- android - PWA 可以向 ios 和 android 发送类似“Messenger”的通知吗?
- arrays - 根据数组维度返回多个元素