如何在Linux上像rm -rf一样强制删除?

use*_*022 6 python

我想删除我的App服务器的一些日志文件而不关闭我的服务器.使用Python可以使用什么命令来执行此操作,例如rm -rf在Linux系统中?

请帮忙.

Ram*_*nda 7

#!/usr/bin/env python             
import os

def nukedir(dir):
    if dir[-1] == os.sep: dir = dir[:-1]
    files = os.listdir(dir)
    for file in files:
        if file == '.' or file == '..': continue
        path = dir + os.sep + file
        if os.path.isdir(path):
            nukedir(path)
        else:
            os.unlink(path)
    os.rmdir(dir)

nukedir("/home/mb/test");
Run Code Online (Sandbox Code Playgroud)

上面的函数将递归删除任何目录...


Ale*_*per 6

在这种情况下,shutil是你的朋友.

http://docs.python.org/2/library/shutil.html#shutil.rmtree

import shutil
shutil.rmtree("/my/path/to/folder/to/destroy")
Run Code Online (Sandbox Code Playgroud)

  • 当谷歌参考的最高结果是这个问题时,有没有其他人看到这个自鸣得意的回应中的讽刺? (3认同)

ale*_*xis 5

您的服务器是在运行Linux,还是仅仅是一个例子?

在python上,shutil.rmtree()相当于rm -r(如@Alex已经回答).所有python删除命令(os.unlink(), os.rmdir())都可以在没有检查的情况下工作,因此它们总是相当于rm -f.

但是如果你在Windows上,操作系统将不允许你删除仍然打开的文件; 你会得到一个例外.AFAIK没有任何无特权的流程可以做到这一点.