在没有Pywin32的Python中检测Vista/7上的符号链接(mklink)

2024-04-29 01:25:33 发布

您现在位置:Python中文网/ 问答频道 /正文

当前的构建方法集体菜谱煎蛋饼使用连接.exe在所有版本的Windows上创建符号链接。然而连接.exe默认情况下不随Windows一起提供,最重要的是不支持创建指向文件(仅目录)的符号链接,这会导致很多Python包出现问题。在

在NT6+(Vista和7)上,现在有mklink实用程序,它不仅默认提供,还可以创建指向文件和目录的符号链接。我想更新集体菜谱煎蛋饼如果可以使用它,并且除了一个简单的特性之外已经这样做了;检测一个文件或文件夹是否实际上是一个符号链接。由于这是一个小的构建方法,在我看来,需要Pywin32有点太多了(除非setuptools不知何故只能在Windows上下载它?)。在

目前在Windows上,煎蛋饼的功能是调用连接.exe然后grep对“Substitute Name:”的响应,但我找不到比mklink更简单的内容。在

我能想到的唯一方法是在目录中调用“dir”,然后逐行遍历响应,在同一行中查找“<;SYMLINK>;”和文件夹/文件名。当然还有更好的吗?在


Tags: 文件方法版本目录文件夹链接windows符号
2条回答

请参阅jaraco.windows.filesystem(是jaraco.windows package)的一部分,以获取在没有pywin32的Windows中符号链接操作的大量示例。在

在windows上,连接和符号链接具有属性FILE_ATTRIBUTE_REPARSE_POINT(0x400)用于重分析点。如果你得到了文件的属性,然后检测这个?在

您可以使用ctypes(如另一个答案中所述)访问Kernel32.dll and GetFileAttributes,并检测该值。在

相关问题 更多 >