-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfilemeta.py
61 lines (46 loc) · 1.5 KB
/
filemeta.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# filemeta.py
# Created by frankV
# PythonPubCrawler
# https://github.com/frankV/pythonpubcrawl
""" filemeta.py -- base class for file meta data """
import os, time, sys, hashlib
from stat import *
class FileMeta(object):
def __init__(self, fullpath, filename):
self.fullPathFileName = fullpath
self.filename = filename
self.extension = self.getExtension()
self.created = self.getMetaData()[0]
self.modified = self.getMetaData()[1]
self.size = self.getMetaData()[2]
self.owner = self.getMetaData()[3]
self.permissions = self.getMetaData()[4]
self.md5 = self.getMD5()
def getExtension(self):
return os.path.splitext(self.filename)[1].lower()
def getMetaData(self):
try:
st = os.stat(self.fullPathFileName)
except OSError, e:
print "failed to get file info"
else:
created = time.ctime(os.path.getctime(self.fullPathFileName))
modified = time.ctime(os.path.getmtime(self.fullPathFileName))
size = st[ST_SIZE]
owner = st[ST_UID]
permissions = oct(st[ST_MODE])[-3:]
return [created, modified, size, owner, permissions]
def getMD5(self, block_size=128):
f = open(self.fullPathFileName, 'rb')
md5 = hashlib.md5()
while True:
data = f.read(block_size)
if not data:
break
md5.update(data)
print md5
prompt = raw_input('\nmd5?')
return md5.digest()
def fileMetaList(self):
return [self.filename, self.extension, self.created, self.modified,\
self.size, self.owner, self.permissions, self.md5]