试图隐藏文件夹但没有成功。我发现了这个:
import ctypes
ctypes.windll.kernel32.SetFileAttributesW('G:\Dir\folder1', 2)
但它对我不起作用。我做错了什么?
最佳答案
您的代码有两处错误,都与文件夹名称文字有关。 SetFileAttributesW()
函数需要一个 Unicode 字符串参数。您可以通过在字符串前加上字符 u
来指定其中之一。其次,字符串中的任何文字反斜杠字符都必须加倍,或者您可以 [also] 添加 r
前缀。下面的代码中使用了双重前缀。
import ctypes
FILE_ATTRIBUTE_HIDDEN = 0x02
ret = ctypes.windll.kernel32.SetFileAttributesW(ur'G:\Dir\folder1',
FILE_ATTRIBUTE_HIDDEN)
if ret:
print('attribute set to Hidden')
else: # return code of zero indicates failure -- raise a Windows error
raise ctypes.WinError()
您可以找到 Windows 的系统错误代码 here .要在资源管理器中查看属性更改的结果,请确保其“显示隐藏文件”选项未启用。
为了说明@Eryk Sun 在关于安排自动从字节字符串转换为 Unicode 的评论中所说的内容,您需要在调用函数以指定正确的其参数的转换。 @Eryk Sun 还解释了为什么这不是 WinAPI 函数的 W
版本中字符串指针的默认值——请参阅评论。
ctypes.windll.kernel32.SetFileAttributesW.argtypes = (ctypes.c_wchar_p, ctypes.c_uint32)
然后,在这样做之后,以下将起作用(请注意,由于反斜杠,r
前缀仍然是必需的):
ret = ctypes.windll.kernel32.SetFileAttributesW(r'G:\Dir\folder1',
FILE_ATTRIBUTE_HIDDEN)
关于python - 在 Windows 操作系统中的文件夹上设置 "hide"属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19622133/