我想使用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'表示所有文件都没有属性位.
从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个字符.