You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.2 KiB
Python
55 lines
1.2 KiB
Python
|
|
import string
|
|
|
|
# Header for the files information
|
|
file_info_header = 'File Size Description\n'\
|
|
+ '-' * 78
|
|
|
|
class ULog:
|
|
def __init__(self, path):
|
|
self.path = path
|
|
self.fp = open(path, 'a')
|
|
|
|
def puts(self, string):
|
|
fp.puts(strftime('%b %d %H:%M:%S ', gmtime())+string)
|
|
|
|
def close(self):
|
|
fp.close()
|
|
|
|
def format_desc(desc, offset, width=78):
|
|
""" Format file's description
|
|
"""
|
|
yield = ''
|
|
desc = string.expandtabs(desc, 1)
|
|
for line in string.split(desc, '\n'):
|
|
line = string.rstrip(line)
|
|
if line == '':
|
|
continue
|
|
pos = 0
|
|
endpos = width
|
|
while line[pos:endpos]:
|
|
if yield:
|
|
yield = yield + '\n'
|
|
yield = yield + offset * ' '
|
|
yield = yield + line[pos:endpos]
|
|
pos = endpos
|
|
endpos = endpos + width
|
|
return yield
|
|
|
|
def format_file_info(name, size, desc, line_length=78):
|
|
""" Format file information to meet human requirements
|
|
"""
|
|
if size < 0:
|
|
yield = '%-20s ' % name + 11 * ' '
|
|
else:
|
|
yield = '%-20s %-11d' % (name, size)
|
|
if desc:
|
|
offset = len(yield) + 1
|
|
width = line_length - offset
|
|
desc = format_desc(desc, offset, width)
|
|
yield = yield + ' ' + string.lstrip(desc)
|
|
else:
|
|
yield = yield + ' Description not available'
|
|
return yield
|
|
|