1import platform 2import ctypes 3 4 5def windows_only(func): 6 if platform.system() != 'Windows': 7 return lambda *args, **kwargs: None 8 return func 9 10 11@windows_only 12def hide_file(path): 13 """ 14 Set the hidden attribute on a file or directory. 15 16 From http://stackoverflow.com/questions/19622133/ 17 18 `path` must be text. 19 """ 20 __import__('ctypes.wintypes') 21 SetFileAttributes = ctypes.windll.kernel32.SetFileAttributesW 22 SetFileAttributes.argtypes = ctypes.wintypes.LPWSTR, ctypes.wintypes.DWORD 23 SetFileAttributes.restype = ctypes.wintypes.BOOL 24 25 FILE_ATTRIBUTE_HIDDEN = 0x02 26 27 ret = SetFileAttributes(path, FILE_ATTRIBUTE_HIDDEN) 28 if not ret: 29 raise ctypes.WinError() 30