Python 跨平台隐藏文件

15 投票
1 回答
9802 浏览
提问于 2025-04-18 18:06

在*nix系统中,我只需要在文件名前加一个.,就可以把它变成“隐藏文件”。在Windows系统中也有一些方法可以隐藏文件。

那么在Python中,有没有办法让文件在不同平台上都能隐藏呢?

目前的做法是:

def write_hidden(file_name, data):
    file_name = '.' + file_name
    with open(file_name_, 'w') as f:
        f.write(data)

不过正如我所说,这种方法只适用于*nix系统。

1 个回答

12

你可以这样做:

import os
import ctypes

FILE_ATTRIBUTE_HIDDEN = 0x02

def write_hidden(file_name, data):
    """
    Cross platform hidden file writer.
    """
    # For *nix add a '.' prefix.
    prefix = '.' if os.name != 'nt' else ''
    file_name = prefix + file_name

    # Write file.
    with open(file_name, 'w') as f:
        f.write(data)

    # For windows set file attribute.
    if os.name == 'nt':
        ret = ctypes.windll.kernel32.SetFileAttributesW(file_name,
                                                        FILE_ATTRIBUTE_HIDDEN)
        if not ret: # There was an error.
            raise ctypes.WinError()

这个还没有经过测试,但应该可以正常工作。

另外,你可能还想看看这些其他问题,它们帮助我实现了这个:

撰写回答