forked from Antikhiller/ntfs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
48 lines (41 loc) · 1.01 KB
/
utils.py
File metadata and controls
48 lines (41 loc) · 1.01 KB
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
#encoding: utf-8
from hashlib import sha1
import pycabinet
import os
PROJ_PATH = '/data0/ntfs'
DATA_PATH = os.path.join(PROJ_PATH,'data/')
def safetch(dbname,dbpath=PROJ_PATH):
dbname = os.path.join(dbpath,dbname)
try:
os.stat(dbname)
except:
pycabinet.create(dbname)
return dbname
def ntsha1(k):
"""
>>> ntsha1("IDC|西单网通|port1|d")
'7ab0512e54099ce5be8819eabc41be2dc46fa106'
"""
return sha1(k).hexdigest()
def autodir(s,dirpath=DATA_PATH):
"""
>>> autodir("IDC|西单网通|port1|d")
'267a011c682b67839e358faf6ba016ac7fed1d4c'
"""
p = os.path.join(dirpath,ntsha1(s.split("|")[0]))
try:
os.stat(p)
except:
os.makedirs(p)
return p
def genkey(s):
hashdb = safetch('hashkey.tch')
key = pycabinet.get(hashdb,s)
if key==None:
key=ntsha1(s)
pycabinet.put(hashdb,s,key)
fname = safetch( "%s.tch" % key, autodir(s) )
return key
if __name__ == '__main__':
import doctest
doctest.testmod()