我想在不关闭服务器的情况下删除我的应用服务器的一些日志文件。我可以使用什么命令使用 Python 来执行此操作,例如rm -rf
在 Linux 系统中?
请帮忙。
在这种情况下,shutil 是你的朋友。
http://docs.python.org/2/library/shutil.html#shutil.rmtree
import shutil
shutil.rmtree("/my/path/to/folder/to/destroy")
#!/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");
上述函数将递归删除任何目录...
您的服务器是否运行 Linux,或者这只是一个示例?
在 python 上,shutil.rmtree()
相当于rm -r
(正如@Alex 已经回答的那样)。所有 python 删除命令 ( os.unlink(), os.rmdir()
) 都无需检查即可工作,因此它们始终等同于rm -f
.
但是如果你在 Windows 上,操作系统不会让你删除一个仍然打开的文件。你会得到一个例外。AFAIK 没有特权进程对此无能为力。
您可以使用该subprocess
模块:
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