如何更改爲符號鏈接以指向Python中的一個文件到另一個文件? 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
它試圖符號鏈接,如果它失敗,因爲現有文件的一個小功能,它會刪除它並再次鏈接。
import os, errno
def symlink_force(target, link_name):
try:
os.symlink(target, link_name)
except OSError, e:
if e.errno == errno.EEXIST:
os.remove(link_name)
os.symlink(target, link_name)
else:
raise e
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. 如何獲取python中符號鏈接的修改日期?
- 2. 複製Python中的符號鏈接
- 3. 更改java符號鏈接
- 4. 更改符號鏈接
- 5. 在Cocoa的符號鏈接上設置修改日期
- 6. 修改符號
- 7. .htaccess或符號鏈接(符號鏈接)
- 8. 修復npm全局包符號鏈接
- 9. jQuery修改鏈接
- 10. python符號鏈接指向的文件
- 11. libzip中的符號鏈接
- 12. 鏈接中的符號表
- 13. solr中的符號鏈接
- 14. 符號鏈接
- 15. 符號鏈接
- 16. 修改href鏈接的Gmail
- 17. 在批處理腳本中使用修改的路徑創建符號鏈接?
- 18. 使用python zipfile歸檔符號鏈接
- 19. pwd從python擴展符號鏈接
- 20. Python是否尊重符號鏈接?
- 21. Python os.walk +關注符號鏈接
- 22. 用Python找到壞符號鏈接
- 23. 鏈接後更改符號名稱
- 24. 如何修復Linux中的紅色符號鏈接?
- 25. 兩個符號鏈接之間的符號鏈接
- 26. Apache的符號鏈接符號鏈接返回HTTP 500錯誤
- 27. 如何找到鏈接和修改使用BeautifulSoup的HTML Python中
- 28. 符號鏈接自
- 29. Broken符號鏈接
- 30. 符號鏈接perl
的Python 3.3擁有'os.replace'它可以用來代替'os.rename'來在Posix和Windows系統上提供相同的行爲。 – Tom