Pythonで1つのファイルから別のファイルへのシンボリックリンクを変更するにはどうすればよいですか? os.symlink()関数は新しいシンボリックリンクを作成するようにしか動作していないようです。Pythonのシンボリックリンクを変更する
17
A
答えて
9
最初にos.unlink()
と入力し、os.symlink()
を使用して新しいターゲットをポイントして再作成します。
6
私はこの質問を最近調査し、最も良い方法は確かにunlink
であり、次にsymlink
であることが分かりました。しかし、あなたがちょうど壊れたリンクを修正する必要がある場合は、自動交換すると、たとえば、あなたがos.readlink
を行うことができます。
for f in os.listdir(dir):
path = os.path.join(dir, f)
old_link = os.readlink(path)
new_link = old_link.replace(before, after)
os.unlink(path)
os.symlink(new_link, path)
15
シンボリックリンクしようとすると、それが原因で、既存のファイルの失敗した場合、それを削除する小さな機能再度リンクします。
12
アトミックな変更が必要な場合は、リンクが解除されます。
より良い解決策は、新しい一時的なシンボリックリンクを作成し、既存のものの上に名前を変更することです:
os.symlink(target, tmpLink)
os.rename(tmpLink, linkName)
あなたはそれがあまりにも正しく更新されたことを確認するためにチェックすることができます。
if os.path.realpath(linkName) == target:
# Symlink was updated
os.renameのドキュメントによると、Windowsではシンボリックリンクをアトミックに変更する方法がない場合があります。その場合は、削除して再作成するだけです。
0
e.errno = errno.EEXISTあなたは、エラーを非表示にしたくないとき場合の昇給のコマンドを追加することを忘れないでください!
if e.errno == errno.EEXIST:
os.remove(link_name)
os.symlink(target, link_name)
else:
raise
関連する問題
- 1. homebrewでpython3のシンボリックリンクを「python」に変更するには
- 2. Pythonでシンボリックリンクをコピーする
- 3. ウィンドウ内のシンボリックリンクのターゲットを変更する
- 4. python - シンボリックリンクであるファイルをインポートする
- 5. Pythonでシンボリックリンクを削除するには?
- 6. Homebrewでpythonをシンボリックリンクする方法は?
- 7. Pythonはシンボリックリンクを尊重しますか?
- 8. pythonバイトコードを変更する
- 9. Pythonインタプリタウィンドウを変更する
- 10. シンボリックリンクを介してPythonスクリプトを起動
- 11. linux最近変更されたファイルに基づいてシンボリックリンクを作成する
- 12. Pythonの文字列を変更する
- 13. Pythonシェル内のユーザーを変更する
- 14. Python Minidom:ノードの値を変更する
- 15. python seaborn lmplotのマーカーサイズを変更する
- 16. PythonのIDEヒントを変更する
- 17. Pythonのディレクトリ名を変更する
- 18. Htdoc Webrootの切り替え - "httpd.conf"の "DocumentRoot"変数を変更するかシンボリックリンクを使用しますか?
- 19. デフォルトフォントを変更せずにフォント名を変更するpython
- 20. Pythonでテキスト文書を変更する
- 21. 保存パスを変更する - Python
- 22. Pythonモジュール名を変更するには?
- 23. キーボードロックをPythonで変更する
- 24. Pythonインタラクティブプロンプトを変更する ">>>"
- 25. Pythonでdatetime.datetime.hourを変更するには?
- 26. Pythonから.txtを変更する
- 27. のpython不変タイプを変更
- 28. PYTHON:複数の列をPython変数で更新する
- 29. .htaccessまたはシンボリックリンク(シンボリックリンク)
- 30. Pythonで壊れているシンボリックリンクを見つけよう
のPython 3.3は 'os.replace'を持っているが'os.rename'の代わりに使用してPosixとWindowsシステムで同じ動作を提供することができます。 – Tom