试图隐藏文件夹没有成功。 我发现这个:
import ctypes ctypes.windll.kernel32.SetFileAttributesW('G:\Dir\folder1', 2)
但它对我没有用。 我究竟做错了什么?
你的代码有两个错误,都与文件夹名字面值有关。 SetFileAttributesW()
函数需要一个Unicode字符串参数。 你可以通过在字符串前加一个字符u
来指定其中的一个。 其次,字符串中的任何文字反斜杠字符必须加倍,否则也可以为其添加一个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的系统错误代码。 要在资源管理器中查看属性更改的结果,请确保其“显示隐藏文件”选项未启用。
为了说明@eryksun在有关安排从字节字符串到Unicode自动转换的注释中所说的内容, 在调用函数指定其参数的正确转换之前 ,需要执行以下操作。 @eryksun还解释了为什么这不是WAP版本WinAPI函数中指针到字符串的默认值 – 请参阅注释。
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)
试试这个代码:导入os os.System(“attrib + h”+“文件名”)