zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python判断windows隐藏文件的方法

2023-06-13 09:15:20 时间

1.通过windowsattrib命令获取文件隐藏属性

复制代码代码如下:
Syntax
     ATTRIB[+attribute|-attribute][pathname][/S[/D]]

Key
    +   :TurnanattributeON
    -   :ClearanattributeOFF

 pathname:Driveand/orfilenamee.g.C:\*.txt
   /S   :Searchthepathnameincludingallsubfolders.
   /D   :Processfoldersaswell

  attributes:

       R Read-only(1)
       H Hidden(2)
       A Archive(32)
       S System(4)

  extendedattributes:
       E Encrypted
       C Compressed(128:read-only)
       I Notcontent-indexed
       L Symboliclink/Junction(64:read-only)
       N Normal(0:cannotbeusedforfileselection)
       O Offline
       P Sparsefile
       T Temporary




2.隐藏属性值及其含义 
Constants-thefollowingattributevaluesarereturnedbytheGetFileAttributesfunction:

复制代码代码如下:


FILE_ATTRIBUTE_READONLY=1(0x1)
FILE_ATTRIBUTE_HIDDEN=2(0x2)
FILE_ATTRIBUTE_SYSTEM=4(0x4)
FILE_ATTRIBUTE_DIRECTORY=16(0x10)
FILE_ATTRIBUTE_ARCHIVE=32(0x20)
FILE_ATTRIBUTE_NORMAL=128(0x80)
FILE_ATTRIBUTE_TEMPORARY=256(0x100)
FILE_ATTRIBUTE_SPARSE_FILE=512(0x200)
FILE_ATTRIBUTE_REPARSE_POINT=1024(0x400)
FILE_ATTRIBUTE_COMPRESSED=2048(0x800)
FILE_ATTRIBUTE_OFFLINE=4096(0x1000)
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED=8192(0x2000)
FILE_ATTRIBUTE_ENCRYPTED=16384(0x4000)

Forexample,afileattributeof0x120indicatestheTemporary+Archiveattributesareset(0x100+0x20=0x120.)
3.python通过win32api获取文件隐藏属性
python官网对win32API的简单说明https://www.python.org/download/windows/
下载地址http://sourceforge.net/projects/pywin32/

复制代码代码如下:importwin32file
·
filenames=[r"D:\test",
            r"D:\test\$RECYCLE.BIN",
            r"D:\test\.file_test.py.swp",
            r"D:\test\file_test.py"]

forfilenameinfilenames:
   print"%4d,%s"%(win32file.GetFileAttributesW(filename),filename)


运行结果:

4.与运算(&)更直观判断隐藏文件
示例代码如下,&运算的结果与隐藏属性值相对应,可以更直观的判断文件类型。

复制代码代码如下:importwin32file
importwin32con

filenames=[r"D:\test",
            r"D:\test\$RECYCLE.BIN",
            r"D:\test\.file_test.py.swp",
            r"D:\test\file_test.py"]

forfilenameinfilenames:
   file_flag=win32file.GetFileAttributesW(filename)
   is_hiden=file_flag&win32con.FILE_ATTRIBUTE_HIDDEN
   is_system=file_flag&win32con.FILE_ATTRIBUTE_SYSTEM
   print"%4d,%s,%s,%s"%(file_flag,is_hiden,is_system,filename)

运行结果: