-
Notifications
You must be signed in to change notification settings - Fork 11
/
contentfile.py
42 lines (31 loc) · 1.19 KB
/
contentfile.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
#!/usr/bin/env python
# coding: utf-8
import basefile
class contentfile(basefile.basefile):
'''Base class for file classes which can have their contents represented as a string.'''
def __init__(self):
self.content = None
def getcontent(self):
'''Get the file's content.'''
return self.content
def setcontent(self, content):
'''Set the file's content.'''
self.content = content
def read(self, file=None):
'''Read the file contents given a path or file-like object.'''
if file is None:
path = self.path
elif isinstance(file, basestring):
path = file
else:
self.setcontent(file.read())
with open(path, 'rb') as contentfile:
self.setcontent(contentfile.read())
def write(self, file):
'''Write the file contents to a path or file-like object.'''
if file is None or isinstance(file, basestring):
dest = self.dest(file, makedir=True)
with open(dest, 'wb') as file:
file.write(self.getcontent())
else:
file.write(self.getcontent())