サーバーをシャットダウンせずに、アプリ サーバーのいくつかのログ ファイルを削除したいと考えています。rm -rf
Linux システムのように、Python を使用してこれを行うには、どのコマンドを使用できますか?
助けてください。
サーバーをシャットダウンせずに、アプリ サーバーのいくつかのログ ファイルを削除したいと考えています。rm -rf
Linux システムのように、Python を使用してこれを行うには、どのコマンドを使用できますか?
助けてください。
この例では、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 では、(@Alex が既に回答したように) とshutil.rmtree()
同等です。rm -r
すべての python 削除コマンド ( os.unlink(), os.rmdir()
) はチェックなしで機能するため、常に と同等ですrm -f
。
ただし、Windows を使用している場合、OSはまだ開いているファイルを削除できません。例外が発生します。私の知る限り、特権のないプロセスがそれについてできることは何もありません。
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