Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux上如何在Python中像rm-rf一样强制删除?_Python - Fatal编程技术网

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

在Linux上如何在Python中像rm-rf一样强制删除?,python,Python,我想在不关闭服务器的情况下删除我的应用服务器的一些日志文件。在Linux系统中,使用Python(如rm-rf)可以使用什么命令来执行此操作 请帮忙 #!/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 ==

我想在不关闭服务器的情况下删除我的应用服务器的一些日志文件。在Linux系统中,使用Python(如
rm-rf
)可以使用什么命令来执行此操作

请帮忙

#!/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");

上述函数将递归删除任何目录…

在本例中,shutil是您的朋友


您可以使用
子流程
模块:

from subprocess import Popen, PIPE, STDOUT

cmd = 'rm -frv /path/to/dir'
p   = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
out = p.stdout.read()
print out

您的服务器是否运行Linux,或者这只是一个示例

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


但是如果你在Windows上,操作系统会删除一个仍然打开的文件;你会得到一个例外。好了,一个非特权程序对此无能为力。

你看过“强制”删除吗?你对不起作用的代码有什么问题吗?嗨,我想用WLSTHI alexis删除日志文件,我的服务器在linux机器上运行。问题是我没有权限以Weblogic用户身份登录。所以我以前是以没有权限删除Weblogic日志文件的用户身份登录的。我将WLST与Pytan一起使用。有没有办法用WLST删除文件。不知道什么是WLST或Weblogic。要删除文件,您必须能够在具有删除权限的进程下运行某些程序。如果python的
os.unlink()
做不到这一点,那么在任何编程语言中你都无能为力:操作系统都不会让你这么做。虽然有用,
rmtree
并不等效:如果你试图删除一个文件,它就会出错。在这里查看我的答案:您好,谢谢您的回复,但问题是我想使用WLST和Pythan删除Weblogic日志文件。这似乎适用于目录,但并不等同于
rm-rf
:如果尝试删除单个文件,则会出错。此外,如果可能,最好使用Python标准库中经过良好测试的代码,而不是编写自己的代码。在这里查看我的四行
rm-rf
函数:您不需要编写自己的函数。Python的标准库已经有了递归删除的shutil.rmtree(),当Google参考中的顶级结果是这个问题时,其他人是否看到了这个自鸣得意的回答中的讽刺?虽然有用,但是,
rmtree
并不等效:如果你试图删除单个文件,它就会出错。在这里看到我的答案:我正在查看一些代码,开发人员使用了子流程rm vs unlink。他们开始使用unlink,然后切换到
subprocess.call(['rm','-f',file_path])
。我只是想了解他们为什么会这样做,以及性能是否有所提高?因为没有任何内置的删除文件或文件夹的方法是可靠的,即使您可能找到了所有的解决方法。
from subprocess import Popen, PIPE, STDOUT

cmd = 'rm -frv /path/to/dir'
p   = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
out = p.stdout.read()
print out