【问题标题】:Determine if two files are hard linked on Windows?确定两个文件是否在 Windows 上硬链接?
【发布时间】:2012-11-16 03:24:15
【问题描述】:

我可以通过以下方式创建硬链接:

import win32file
win32file.CreateHardLink(src, dst)

我需要做的是确定 2 个文件(src、dst)是否已经硬链接,如果没有,则删除 dst 并创建链接。

有人知道怎么做吗?

【问题讨论】:

  • 为什么不使用os.link创建硬链接?
  • 好建议 - 但 os.link 在 Python 2.7 的 Windows 中不受支持
  • 我添加了 2.7 标签来突出显示这一点。

标签: python windows python-2.7


【解决方案1】:

对于来自 Google 的用户:

在 Python 3 中,使用 os.path.samefile

这适用于 Windows 和 Unix。

【讨论】:

  • 很好的答案!但是,这仅在 Python 3 中的 Windows 上受支持,不幸的是我还不能在这个项目中依赖它。
【解决方案2】:

感谢 martineau 的指针,我找到了以下文章,它提供了一些工作 Python 代码,几乎完全符合我的要求:

http://timgolden.me.uk/python/win32_how_do_i/see_if_two_files_are_the_same_file.html

【讨论】:

  • 您应该将相关代码复制到答案中,因为链接可能会失效。
【解决方案3】:

使用 Win32 API 函数GetFileInformationByHandle。返回的BY_HANDLE_FILE_INFORMATION 结构中的nNumberOfLinks 成员包含链接总数。值为 1 表示没有硬链接。

【讨论】:

  • 这并不能解决问题。
  • @bgusach:是的。如果dstnNumberOfLinks1,那么它不是硬链接。 src 也一样。
  • 您无法判断两个文件是否是硬链接的。在最好的情况下,如果1,您可以看出它们没有硬链接。但如果文件A2 硬链接,而文件B 也有2... 这并不意味着它们是同一个文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 2011-07-09
相关资源
最近更新 更多