Windows上的符号链接?
有没有人知道怎么在不同版本的win32系统上,用Python来创建或读取符号链接?最好是能尽量少写和平台相关的代码,因为我希望我的应用程序能够在多个平台上运行。
11 个回答
14
在子进程中使用mklink命令来创建链接。
from subprocess import call
call(['mklink', 'LINK', 'TARGET'], shell=True)
20
在使用Windows 8.1和NTFS文件系统的情况下,os.symlink在Python 3.3上可以正常工作。
50
NTFS文件系统有一个叫做“连接点”的功能,我觉得你可以用它来代替其他方法。你可以使用Python的win32 API模块来实现,比如下面这个例子:
import win32file
win32file.CreateSymbolicLink(fileSrc, fileTarget, 1)
如果你不想依赖win32API模块,也可以使用ctypes
,直接调用CreateSymbolicLink
这个win32 API,比如:
import ctypes
kdll = ctypes.windll.LoadLibrary("kernel32.dll")
kdll.CreateSymbolicLinkA("d:\\test.txt", "d:\\test_link.txt", 0)
根据MSDN的说明(http://msdn.microsoft.com/en-us/library/aa363866(VS.85).aspx),最低支持的客户端是Windows Vista。
另外:这个方法也适用于目录(通过第三个参数来指明)。如果支持Unicode,代码看起来是这样的:
kdll.CreateSymbolicLinkW(UR"D:\testdirLink", UR"D:\testdir", 1)
你还可以查看 在Python中创建NTFS连接点