试图隐藏文件夹没有成功。我发现这个:在windows操作系统的文件夹中设置“隐藏”属性?
import ctypes
ctypes.windll.kernel32.SetFileAttributesW('G:\Dir\folder1', 2)
但它没有为我工作。我究竟做错了什么?
试图隐藏文件夹没有成功。我发现这个:在windows操作系统的文件夹中设置“隐藏”属性?
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的系统错误代码here。要在资源管理器中查看属性更改的结果,请确保其“显示隐藏文件”选项未启用。
为了说明什么@eryksun在有关安排从字节字符串转换为Unicode自动发生评论说,你需要之前做到以下几点调用函数来指定它的参数的适当转换。 @eryksun还解释了为什么这不是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)
试试这个代码: 导入OS 使用os.system(“ATTRIB + h“+”文件名“)
当然,这可以在没有原始win32的平台无关的方式下完成 –
martineau谢谢! – iRex
David Heffernan,怎么样?如果它不是秘密? :) – iRex