8

サーバーをシャットダウンせずに、アプリ サーバーのいくつかのログ ファイルを削除したいと考えています。rm -rfLinux システムのように、Python を使用してこれを行うには、どのコマンドを使用できますか?

助けてください。

4

4 に答える 4

9

この例では、shutil があなたの友達です。

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

import shutil
shutil.rmtree("/my/path/to/folder/to/destroy")
于 2012-12-07T16:05:01.480 に答える
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");

上記の関数は、ディレクトリを再帰的に削除します...

于 2012-12-07T15:58:30.983 に答える
4

サーバーは Linux を実行していますか、それとも単なる例ですか?

Python では、(@Alex が既に回答したように) とshutil.rmtree()同等です。rm -rすべての python 削除コマンド ( os.unlink(), os.rmdir()) はチェックなしで機能するため、常に と同等ですrm -f

ただし、Windows を使用している場合、OSはまだ開いているファイルを削除できません。例外が発生します。私の知る限り、特権のないプロセスがそれについてできることは何もありません。

于 2012-12-07T18:32:40.897 に答える
0

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
于 2012-12-07T16:06:30.490 に答える