Project

General

Profile

Download (1.65 KB) Statistics
| Branch: | Tag: | Revision:
import os
import sys

import lxml.etree as ET

class Directory(object):
def __init__(self, path):
self.path = path
self.dirname = os.path.basename(path)
def __repr__(self):
return '{:s} - DIRECTORY'.format(self.dirname)
def make_row(self):
row = ET.Element('tr')
name_element = ET.SubElement(row, 'td')
name_element.text = self.dirname
size_element = ET.SubElement(row, 'td')
size_element.text = '--'
return row


class File(object):
def __init__(self, path):
self.path = path
self.filename = os.path.basename(path)
self.filesize = os.path.getsize(path)
def __repr__(self):
return '{:s} - {:d}'.format(self.path, self.filesize)

def make_row(self):
row = ET.Element('tr')
name_element = ET.SubElement(row, 'td')
name_element.text = self.filename
size_element = ET.SubElement(row, 'td')
size_element.text = '{:d}'.format(self.filesize)
return row


def main():
if len(sys.argv) < 2:
print 'ERROR: not enough arguments specified'
return 1
contents = []
base_path = sys.argv[1]
for item in os.listdir(base_path):
full_path = os.path.join(base_path, item)
if os.path.isfile(full_path):
contents.append(File(full_path))
elif os.path.isdir(full_path):
contents.append(Directory(full_path))
root = ET.Element('html')
body_tag = ET.SubElement(root, 'body')
table_tag = ET.SubElement(root, 'table')
row = ET.Element('tr')
head1 = ET.SubElement(row, 'th')
head1.text = 'Name'
head2 = ET.SubElement(row, 'th')
head2.text = 'Size'
table_tag.append(row)

for item in contents:
# poly freakin morphism
table_tag.append(item.make_row())
ET.dump(root)
if __name__ == '__main__':
sys.exit(main())
    (1-1/1)