作業ディレクトリ内のいくつかのシンボリック リンクを削除しようとしましたが、いくつかの問題に直面しています。
os.remove
リンクの元のフォルダの実際の内容も削除します
os.shutil
シンボリック リンクの場合はエラーが発生します。
元のコンテンツを破壊せずに python コマンドを使用してシンボリック リンクを削除する方法はありますか?
ありがとう
os.unlink()
私のために働きます。リンク先のディレクトリを削除せずに、シンボリックリンクを削除します。
申し訳ありませんが、私は愚かなプログラミングの間違いを犯しました.リンクの代わりにソースを愚かに削除していました.
正解は @samfrances によるものです。
os.unlink
トリックを行います。
これに加えて、Python を使用してディレクトリをクリアする場合のその他のヒントを次に示します。
間違いなくスレッドセーフではありませんが、アイデアはわかります...
def rm(obj):
if os.path.exists(obj):
if os.path.isdir(obj):
if os.path.islink(obj):
os.unlink(obj)
else:
shutil.rmtree(obj)
else:
if os.path.islink(obj):
os.unlink(obj)
else:
os.remove(obj)
Python 3.4 以降では、リンクがファイルの場合はunlink()
.
>>> from pathlib import Path
>>> p = Path('/some/file/')
>>> p.unlink()
パスがディレクトリを指している場合は、代わりに Path.rmdir() を使用してください。
>>> from pathlib import Path
>>> p = Path('/some/dir/')
>>> p.rmdir()
ディレクトリ名の末尾にスラッシュが含まれている場合、linuxrm
コマンドはリンクをたどってディレクトリを削除しようとします。ディレクトリへのシンボリックリンクを削除するを参照してください。os.remove
ドキュメントには、ディレクトリを削除しようとするとエラーが発生すると書かれていますが、OSError
シンボリックリンクの場合は常にそうなるとは限りません。