試圖隱藏文件夾沒有成功。我發現這個:在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