-
Notifications
You must be signed in to change notification settings - Fork 7
/
utils.py
69 lines (59 loc) · 1.32 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
"""\
This file contains useful utilities for useage in the program.
"""
import pprint
import sys
import string
import traceback
import os
import os.path
try:
import cPickle as pickle
except ImportError:
import pickle
def do_traceback():
type, val, tb = sys.exc_info()
if type is None or val is None or tb is None:
return
sys.stderr.write(string.join(traceback.format_exception(type, val, tb), ''))
if hasattr(sys.stderr, "flush"):
sys.stderr.flush()
def warn(string):
print "WARNING:", string
class Blank:
pass
def configpath():
"""\
Figures out where to save the preferences.
"""
dirs = [("APPDATA", "Thousand Parsec"), ("HOME", ".tp"), (".", "var")]
for base, extra in dirs:
if base in os.environ:
base = os.environ[base]
elif base != ".":
continue
rc = os.path.join(base, extra)
if not os.path.exists(rc):
os.mkdir(rc)
return rc
def load_data(file):
"""\
Loads preference data from a file.
"""
try:
f = open(os.path.join(configpath(), file), "r")
data = pickle.load(f)
except IOError:
return None
return data
def save_data(file, data):
"""\
Saves preference data to a file.
"""
f = open(os.path.join(configpath(), file), "w")
pickle.dump(data, f)
f.close()
__all__ = [
'Blank', 'save_data', 'load_data', 'configpath', # Config functions
'do_traceback', # Debugging functions
]