在python中检查文件属性

Posted

技术标签:

【中文标题】在python中检查文件属性【英文标题】:Checking file attributes in python 【发布时间】:2009-03-18 19:51:17 【问题描述】:

我想使用 python 检查目录中每个文件的存档位。到目前为止,我有以下内容,但我无法让它正常工作。该脚本的想法是能够查看所有已打开存档位的文件。

谢谢

# -*- coding: latin-1 -*-
import os , win32file, win32con
from time import *
start = clock()

ext = [ '.txt' , '.doc' ]

def fileattributeisset(filename, fileattr):
    return bool(win32file.GetFileAttributes(filename) & fileattr)

for root, dirs, files in os.walk('d:\\Pruebas'):
    print ("root", root)    
    print ("dirs", dirs)
    print ("files", files)
    for i in files:
        if i[ - 4:] in ext: 
            print('...', root, '\\', i, end=' ')
            fattrs = win32file.GetFileAttributes(i)
            if fattrs & win32con.FILE_ATTRIBUTE_ARCHIVE:
                print('A isSet',fattrs)
        #print( fileattributeisset(i, win32con.FILE_ATTRIBUTE_ARCHIVE)) 
    print ('####')

编辑:所有文件似乎都打开了存档位,执行“attrib”显示所有文件都没有打开属性位。

【问题讨论】:

当你说它不能“正常工作”时,会发生什么? -1:没有回溯或错误消息。 【参考方案1】:

os.walk 返回的文件列表不是全限定路径,所以调用时

win32file.GetFileAttributes(i)

找不到文件并返回错误代码;恰好是-1。所以操作

fattrs & win32con.FILE_ATTRIBUTE_ARCHIVE 

总是正确的。

您需要将根连接到文件名,以便 GetFileAttributes 成功:

fattrs = win32file.GetFileAttributes(os.path.join(root, i))

此外,当您检查扩展名时,最好使用os.path.splitext(path) 来检索扩展名,而不是像您那样依赖它们是 3 个字符。

【讨论】:

以上是关于在python中检查文件属性的主要内容,如果未能解决你的问题,请参考以下文章

如何在解析之前检查 XML 中是不是存在属性和标签?

pillow教程

检查属性文件是不是存在并具有所需的属性

有没有办法在 Xcode Storyboard 属性检查器中使用 plist 文件字符串?

如何检查属性文件的文件类型

XML解析检查属性是不是存在