fix picture fetching
[rofl0r-twatscrape.git] / utils.py
blob63c06ea69f5a68796f0f67f54b4b5c783e82a054
1 import os
2 import time
3 import sys
4 import errno
6 def safe_write(fn, contents):
7 bak = ''
8 if os.path.exists(fn):
9 bak = fn + '.bak'
10 if os.path.exists(bak): os.unlink(bak)
11 os.rename(fn, bak)
12 try:
13 with open(fn, 'w') as h:
14 h.write(contents)
15 except:
16 os.rename(bak, fn)
17 return False
18 if bak != '':
19 os.unlink(bak)
20 return True
22 def retry_write(fn, contents):
23 while 1:
24 try:
25 with open(fn, 'w') as h: h.write(contents)
26 break
27 except IOError as e:
28 if e.errno == errno.ENOSPC:
29 sys.stderr.write('disk full, retrying in 10s\n')
30 time.sleep(10)
31 else:
32 raise e
34 def retry_makedirs(fn):
35 while 1:
36 try:
37 os.makedirs(fn)
38 break
39 except OSError as e:
40 if e.errno == errno.ENOSPC:
41 sys.stderr.write('makedir: disk full, retrying in 10s\n')
42 time.sleep(10)
43 else:
44 raise e
46 if __name__ == "__main__":
47 try: data = open('test.dat', 'r').read()
48 except: data = ''
49 print safe_write('test.dat', data + ('A'*128))