在python中检查文件属性
我想使用python检查目录中每个文件的归档位。到目前为止,我已经做到了以下几点,但我不能让它正常工作。该脚本的思想是能够看到所有打开了存档位的文件 谢谢在python中检查文件属性,python,Python,我想使用python检查目录中每个文件的归档位。到目前为止,我已经做到了以下几点,但我不能让它正常工作。该脚本的思想是能够看到所有打开了存档位的文件 谢谢 # -*- coding: latin-1 -*- import os , win32file, win32con from time import * start = clock() ext = [ '.txt' , '.doc' ] def fileattributeisset(filename, fileattr): ret
# -*- 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个字符长的扩展名。当您说扩展名“工作不正常”时,会发生什么?-1:无回溯或错误消息。