任务和背景:
在win32平台中创建、回读、删除指向目录的链接。
我在python代码中遵循的方法是,按顺序
a、 尝试创建真正的符号链接(如果支持)(通过mklink cmd)
b、 如果不支持,则返回到创建连接点(如果支持的话)(通过linkd cmd)
读取和删除遵循相同的方法。在
问题:
symlink和juncpt的创建和删除很简单,但我无法理解如何读取目标,即指向目录。在
进展:
a、 对于连接点,我可以使用'linkd'并以一种难看的方式解析stdout来获取target dir。
b、 对于symlink,似乎没有这样的解决方案。
c、 我看到python3.1.1[1]对win32symlinks有本地支持,但是使用的是v2.7.1,现在无法升级。
d、 pywin32模块中有创建symlink的方法,但我看不到任何方法来读回它
p.s.我对Python很陌生,所以如果有其他方法可以轻松完成这一点,请告诉我。在
[1][http://bugs.python.org/issue1578269][1]
都是关于reparse points。在
这篇Code Project文章应该提供您需要的信息。您必须使用ctypes或win32api将其转换为Python。在
除了一些关于如何使用ctypes模块创建符号链接的文章外,您还可以找到一个使用win32file module here读取符号链接的文章。我还编写了一个Python C-Extension here实现Windows上的连接、符号链接和硬链接,不过我要提醒您,它需要进行一次认真的检查。(在真正阅读PythonC-Extensions之前写的,所以我没有真正把适当的Py_-XREF,etcs放在适当的位置上)
还有一个只使用存储库中某个ctypes模块的读、写和检查连接的实现。在
Win32file库对我也不起作用。但是如果你有Junction你可以使用这个(只要改变连接路径来适应你的):
如果不想依赖于连接,还可以解析
DIR /A:L
输出。在相关问题 更多 >
编程相关推荐