您的代码有两件事,都与文件夹名称文字有关。该
SetFileAttributesW()函数需要Unipre字符串参数。您可以通过在字符串前面加上字符来指定其中之一
u。其次,字符串中的任何文字反斜杠字符都必须加倍,或者您也可以
r为其添加前缀。下面的代码中使用了一个双前缀。
import ctypesFILE_ATTRIBUTE_HIDDEN = 0x02ret = ctypes.windll.kernel32.SetFileAttributesW(ur'G:Dirfolder1', FILE_ATTRIBUTE_HIDDEN)if ret: print('attribute set to Hidden')else: # return pre of zero indicates failure -- raise a Windows error raise ctypes.WinError()您可以在此处找到Windows的系统错误代码。要在资源管理器中查看属性更改的结果,请确保 未 启用其“显示隐藏文件”选项。
为了说明@eryksun在关于安排自动将字节字符串转换为Unipre的评论中所说的内容,您需要 在 调用函数以指定其参数的正确转换 之前
执行以下操作。@eryksun还解释了为什么这不是
WWinAPI函数版本中的指向字符串的默认值-请参见注释。
https://docs.microsoft.com/zh-cn/windows/win32/debug/system-error-
pres ctypes.windll.kernel32.SetFileAttributesW.argtypes
=(ctypes.c_wchar_p,ctypes.c_uint32)
然后,这将起作用(请注意,
r由于反斜杠,仍然需要前缀):
ret = ctypes.windll.kernel32.SetFileAttributesW(r'G:Dirfolder1', FILE_ATTRIBUTE_HIDDEN)



