私のサーバーをシャットダウンすることなく、私のAppサーバーのいくつかのログファイルを削除したい。 Linuxシステムでrm -rf
のようなPythonを使用してこれを行うにはどのようなコマンドを使用できますか?Linuxでrm -rfのようにPythonで強制的に削除するには?
助けてください。再帰的に任意のディレクトリを削除する関数の上
私のサーバーをシャットダウンすることなく、私のAppサーバーのいくつかのログファイルを削除したい。 Linuxシステムでrm -rf
のようなPythonを使用してこれを行うにはどのようなコマンドを使用できますか?Linuxでrm -rfのようにPythonで強制的に削除するには?
助けてください。再帰的に任意のディレクトリを削除する関数の上
#!/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");
...
HIの返信ありがとうございますが、問題はPythanでWLSTを使用してWeblogicログファイルを削除したいのです。 – user1344022
これはディレクトリのように動作するはずですが、 'rm -rf'と同じではありません。一つのファイルを削除しようとするとエラーになります。また、独自のコードを書くのではなく、可能であれば、Pythonの標準ライブラリから十分にテストされたコードを使用することをお勧めします。私の4行の 'rm -rf'関数を見てください:http://stackoverflow.com/a/9559881/260491 –
あなた自身で書く必要はありません。 Pythonの標準ライブラリには既に再帰的に削除されたshutil.rmtree()があります –
shutilは、このインスタンスではあなたの友達です。
http://docs.python.org/2/library/shutil.html#shutil.rmtree
import shutil
shutil.rmtree("/my/path/to/folder/to/destroy")
Googleのリファレンスのトップ結果がこの非常に疑問なのは、 – RussellStewart
便利ですが、 'rmtree'は等価ではありません。一つのファイルを削除しようとするとエラーになります。私の答えはこちらを参照してください:http://stackoverflow.com/a/9559881/260491 –
あなたは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
私はいくつかのコードを検討しており、開発者はサブプロセスrmとunlinkを使用しています。彼らは最初にunlinkを使い、 'subprocess.call(['rm'、 '-f'、file_path])に切り替えました。私は彼らがなぜそれをするのかを理解しようとしています、そして、パフォーマンスが向上したら? – radtek
は、Linuxを実行しているサーバーである、またはそれは単なる一例ですか?
Pythonでは、shutil.rmtree()
はrm -r
(@Alexはすでに回答済み)と同等です。すべてのpython削除コマンド(os.unlink(), os.rmdir()
)はチェックなしで動作するので、常にrm -f
に相当します。
Windowsの場合、OS will not let youはまだ開いているファイルを削除します。例外が発生します。 AFAIKには、特権のないプロセスでは何もできません。
HI alexis、私のサーバはLinuxマシン上で動作しています。問題は、私はWeblogicユーザーとしてログインする権限がありません。だから私はWeblogicログファイルを削除する権限を持っていないユーザーとしてログインしていました。私はPythanでWLSTを使用しています。そこにはWLSTを使ってファイルBYを削除する方法があります。 – user1344022
WLSTまたはWeblogicが何であるか分かりません。ファイルを削除するには、削除する権限を持つプロセスの下で_some_ programを実行できる必要があります。もしPythonの 'os.unlink()'がそれを行えないなら、あなたは何もあなたのプログラミング言語で何もできません:OSはあなたに許しません。 – alexis
便利ですが、 'rmtree'は等価ではありません。一つのファイルを削除しようとするとエラーになります。私の答えはこちら:http://stackoverflow.com/a/9559881/260491 –
[Pythonライブラリリファレンス](http://docs.python.org/3/library/os.html#module-os)を見ましたか? –
'force'を削除しますか?動作しなかったコードに問題はありましたか? –
HI私はWLSTを使用してログファイルを削除したい – user1344022