3

ソースディレクトリとともにシンボリックリンクを削除したいと思います。

例えば ​​-

ls -lrt
testsymlink -> /user/temp/testdir

testsymlinkと の両方を削除したいと思い/user/temp/testdirます。私はシンボリックリンク名しか知らないと考えてください。

Python を使用するユーティリティはどれもうまく機能します。

4

2 に答える 2

5

の結果を使用してos.path.realpath、symlink ターゲットを検出して削除できます。例:

import os

# ./foo -> ./bar
filepath = "./foo"

if (os.path.realpath(filepath) != filepath):
    targetpath = os.path.realpath(filepath)

os.remove(filepath)
if (targetpath):
     os.remove(targetpath)
于 2012-10-01T17:44:08.947 に答える
3

編集: Python での解決策が必要だとは思いませんでした: これはすべて、UNIX シェルでのみ関連します。以下の 2 つのコマンドを呼び出しでラップすることもできますがos.system()、Tim の回答に従うことを強くお勧めします。

シンボリックリンクが指しているオブジェクトのパスを取得するには、次を使用できますreadlink

$ readlink testsymlink
/user/temp/testdir

シンボリックリンクが指しているオブジェクトを削除するには、 to の出力を渡すことができreadlinkますrm:

$ rm -r `readlink testsymlink`

バッククォートにより、それらの内部のコマンドが実行され、独自の出力に置き換えられます。最後に、シンボリック リンク自体を削除するには、次のコマンドを実行します。

$ rm testsymlink
于 2012-10-01T17:46:26.157 に答える