-
Notifications
You must be signed in to change notification settings - Fork 1
/
utils.py
73 lines (50 loc) · 1.63 KB
/
utils.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python
# --*--codig: utf8 --*--
import time
import os
import stat
# linux
if os.name == 'posix':
import grp
import pwd
def fileProperty(filepath):
st = os.stat(filepath) #
fileMessage = [ ]
def _getFileMode( ):
# linux
if os.name == 'posix':
modes = [
stat.S_IRUSR, stat.S_IWUSR, stat.S_IXUSR,
stat.S_IRGRP, stat.S_IWGRP, stat.S_IXGRP,
stat.S_IROTH, stat.S_IWOTH, stat.S_IXOTH,
]
mode = st.st_mode
fullmode = ''
fullmode += os.path.isdir(filepath) and 'd' or '-'
for i in range(9):
fullmode += bool(mode & modes[i]) and 'rwxrwxrwx'[i] or '-'
# windows, only record file or folder
else:
# file or folder
fullmode = os.path.isdir(filepath) and 'folder' or 'file'
return fullmode
def _getFilesNumber( ):
return str(st.st_nlink)
def _getUser( ):
if os.name == 'posix':
return pwd.getpwuid(st.st_uid).pw_name
else:
return ''
def _getGroup( ):
if os.name == 'posix':
return grp.getgrgid(st.st_gid).gr_name
else:
return ''
def _getSize( ):
return str(st.st_size)
def _getLastTime( ):
return time.strftime('%b %d %H:%M', time.gmtime(st.st_mtime))
for func in ('_getFileMode()', '_getFilesNumber()', '_getUser()', '_getGroup()', '_getSize()', '_getLastTime()'):
fileMessage.append(eval(func))
fileMessage.append(os.path.basename(filepath))
return ' '.join(fileMessage)