Posted on 23-05-2013
Filed Under (技术) by waterlin

Windows 有一个 CreateSymbolicLink 函数,可以用来创建软硬链接,不过对操作系统有硬性要求,桌面版本需要 Windows Vista 以上,服务器版本需要 Windows Server 2008 版本以上。

如果是在 Python 程序需要使用软链接或是硬链接来做一些文件操作,可以有两种方法:

1. 直接使用 Python Win32 API 模块:

import win32file

win32file.CreateSymbolicLink(fileSrc, fileTarget, 1)

2. 使用 ctypes 来实现 os.symlink 这个功能的抽象,以方便跨平台:

import os
from ctypes import *

__CSL = None
def symlink(source, link_name):
    '''symlink(source, link_name)
       Creates a symbolic link pointing to source named link_name'''
    global __CSL
    if __CSL is None:
        import ctypes
        csl = ctypes.windll.kernel32.CreateSymbolicLinkW
        csl.argtypes = (ctypes.c_wchar_p, ctypes.c_wchar_p, ctypes.c_uint32)
        csl.restype = ctypes.c_ubyte
        __CSL = csl
    flags = 0
    if source is not None and os.path.isdir(source):
        flags = 1
    if __CSL(link_name, source, flags) == 0:
        #raise ctypes.WinError()
        print "raise ctypes.WinError() Error"

os.symlink = symlink

定义了上述函数后,就可以直接在代码里用下面的函数来创建软、硬链接了:

if not os.path.islink(docpath):
    os.symlink(path, docpath)

3. 使用第三方右键菜单扩展工具:Link Shell Extension

如果是在 Windows XP 或是更低版本的操作系统里,是没有办法用上述两种办法,不过可以用 Link Shell Extension 来手动创建一个软、硬链接。

如果是在 Windows Vista 或是 Windows 7 上,可以使用 mklink 这个命令来创建链接。

© 2013, 浏忙大爆炸. All rights reserved.
除非注明,浏忙大爆炸文章均为原创,转载请以链接形式标明本文地址。

Post a Comment
Name:
Email:
Website:
Comments: