def iconv(file): print 'Converting', file f = File(file) if not f.exists(): print file, 'does not exist' sys.exit(1) buffer = ByteBuffer.allocate(f.length() * 2) input = FileInputStream(f) input.getChannel().read(buffer) buffer.limit(buffer.position()) buffer.position(0) if buffer.limit() != f.length(): print file, 'could not be read completely' sys.exit(1) input.close() buffer = encoder.encode(decoder.decode(buffer)) buffer.position(0) output = FileOutputStream(file + '.cnv') if output.getChannel().write(buffer) != buffer.limit(): print file, 'could not be reencoded' sys.exit(1) output.close() f.delete() File(file + '.cnv').renameTo(f)
def writeContainer(self, containerfoldername, ext, outputfilename=False): written = False if outputfilename == False: outputfilename = containerfoldername.strip('/') + "-" + uniqid.uniqid() + "." + ext.strip('.') containerfoldername = containerfoldername #we have folder name, written earlier #foldername is filename!! if os.path.isdir(containerfoldername): fname = outputfilename fs = NPOIFSFileSystem() root = fs.getRoot(); #triplet ([Folder], [sub-dirs], [files]) for folder, subs, files in os.walk(containerfoldername): if subs != []: #TODO: cant't yet write directories break else: for f in files: fin = FileInputStream(folder + '/' + f) if fin.getChannel().size() == 0: fin.close() written = False break else: root.createDocument(f, fin) fin.close() written = True else: sys.exit("Not a valid folder: " + containerfoldername) if written == True: fos = FileOutputStream(fname) fs.writeFilesystem(fos); fs.close() return written