• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1import platform
2
3
4def windows_only(func):
5    if platform.system() != 'Windows':
6        return lambda *args, **kwargs: None
7    return func
8
9
10@windows_only
11def hide_file(path):
12    """
13    Set the hidden attribute on a file or directory.
14
15    From http://stackoverflow.com/questions/19622133/
16
17    `path` must be text.
18    """
19    import ctypes
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