[dataio] Implements split_file() (closes #116931)
authorSimon Chabot <simon.chabot@logilab.fr>
Fri, 15 Feb 2013 10:37:39 +0100
changeset 230 6afc3891e633
parent 221 97900fe196c9
child 231 4b6119e623cf
[dataio] Implements split_file() (closes #116931) To speed up the alignement and use a cache system, we need a function to split huge files into smaller ones. This function does the job.
dataio.py
test/data/file2split
test/test_alignment.py
--- a/dataio.py	Wed Jan 23 12:06:55 2013 +0100
+++ b/dataio.py	Fri Feb 15 10:37:39 2013 +0100
@@ -16,6 +16,7 @@
 # with this program. If not, see <http://www.gnu.org/licenses/>.
 
 from os.path import exists as fileexists
+from os import path as osp
 
 import csv
 import urllib
@@ -172,3 +173,35 @@
                                               else targetid,
                      dist
                      ))
+
+
+def split_file(filename, outputdir, nblines=60000):
+    """ Split `filename` into smaller files of ``nblines`` lines. Files are
+        written into `outputdir`.
+
+        Return the list of files
+    """
+    NEW = object()
+
+    def readlines(fobj, nblines):
+        """ yield all lines of the file, and
+        at split-file boundaries, yield a NEW marker
+        """
+        for index, line in enumerate(fobj):
+            if index and index % nblines == 0:
+                yield NEW
+            yield line
+
+    count = 0
+    with open(filename, 'rb') as fobj:
+        outfile = open(osp.join(outputdir, '%s' % count), 'wb')
+        for line in readlines(fobj, nblines):
+            if line is NEW:
+                outfile.close()
+                count += 1
+                outfile = open(osp.join(outputdir, '%s' % count), 'wb')
+                continue
+            outfile.write(line)
+        outfile.close()
+        count += 1
+    return map(str, xrange(count))
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/data/file2split	Fri Feb 15 10:37:39 2013 +0100
@@ -0,0 +1,1000 @@
+cambrant	cambrer
+dégrafa	dégrafer
+adorerais	adorer
+participiales	participial
+coronales	coronal
+amorcera	amorcer
+titanesques	titanesque
+Gymniques	gymnique
+Postérieurement	postérieurement
+lingual	lingual
+stomacal	stomacal
+décalitre	décalitre
+photomaton	photomaton
+éclates	éclater
+manteau	manteau
+majorés	majoré
+pleurants	pleurant
+appartenances	appartenance
+dégoûta	dégoûter
+chantournement	chantournement
+randonné	randonner
+réalisent	réaliser
+raffole	raffoler
+descendirent	descendre
+lubrifient	lubrifier
+transsibérien	transsibérien
+Rythmant	rythmer
+perquisitionnés	perquisitionner
+étampe	étampe
+islamismes	islamisme
+nitra	nitrer
+canéphores	canéphore
+aïeules	aïeul
+Mythologiques	mythologique
+piaillent	piailler
+destiné	destiner
+mélanoses	mélanose
+Otalgie	otalgie
+Déduite	déduire
+Épisiotomie	épisiotomie
+téléphonistes	téléphoniste
+Pourcentages	pourcentage
+milliaire	milliaire
+décortiquera	décortiquer
+correcteur	correcteur
+exhalera	exhaler
+inocybe	inocybe
+grenouillard	grenouillard
+coopéreront	coopérer
+tartignolles	tartignolle
+mesures	mesure
+défoliations	défoliation
+Viens	venir
+holothuries	holothurie
+cambriolés	cambrioler
+chansonniers	chansonnier
+sudorales	sudoral
+sursirent	surseoir
+ferronickel	ferronickel
+frotton	frotton
+énuclée	énucléer
+dépiste	dépister
+tondeurs	tondeur
+Jeannette	Jeannette
+Sanctifiés	sanctifier
+glisses	glisser
+diamine	diamine
+niqué	niquer
+culbutée	culbuter
+Taons	taon
+scripturales	scriptural
+coulomb	coulomb
+hémicycle	hémicycle
+paralysé	paralyser
+badine	badin
+abrège	abréger
+européanisant	européaniser
+Bouteilles	bouteille
+rétrécissement	rétrécissement
+glamour	glamour
+incorpore	incorporer
+prolétariser	prolétariser
+lointaine	lointain
+bigarrés	bigarré
+gril	gril
+infracteur	infracteur
+Regard	regard
+Divas	diva
+allonge	allonger
+muté	muter
+linéale	linéal
+répliquait	répliquer
+Lairds	laird
+démastiquer	démastiquer
+flandricismes	flandricisme
+endoparasites	endoparasite
+Einstein	Einstein
+héliotropes	héliotrope
+rétribuée	rétribuer
+fessant	fesser
+Carottiers	carottier
+âcres	âcre
+déroutantes	déroutant
+CAHUTE	cahute
+Pie-mère	pie-mère
+PIRES	pire
+célibataire	célibataire
+Durits	durit
+dévergondage	dévergondage
+Reprends	reprendre
+labourant	labourer
+dales	dale
+concrétisations	concrétisation
+atermoyer	atermoyer
+sautâmes	sauter
+crée	créer
+nide	nider
+adossant	adosser
+passiflores	passiflore
+asomatognosies	asomatognosie
+Fier-à-bras	fier-à-bras
+Talmudiste	talmudiste
+Ferrets	ferret
+surprofit	surprofit
+répercuteront	répercuter
+syngnathes	syngnathe
+polarographique	polarographique
+Hulten	Hulten
+braiments	braiment
+mondialisés	mondialiser
+flagellation	flagellation
+baptistes	baptiste
+fusaïole	fusaïole
+houspille	houspiller
+nacrée	nacrer
+fréquentée	fréquenter
+dérobées	dérobé
+Démunie	démuni
+pneus	pneu
+Rosaires	rosaire
+Gangrène	gangrène
+nymphaux	nymphal
+froideurs	froideur
+Plongeuse	plongeur
+meringues	meringue
+aplastique	aplastique
+débloquons	débloquer
+heptagonales	heptagonal
+Sécheresse	sécheresse
+successoraux	successoral
+aéronef	aéronef
+brillèrent	briller
+surgeler	surgeler
+arboristes	arboriste
+augustinisme	augustinisme
+détruisirent	détruire
+calquant	calquer
+roulé	rouler
+panis	panis
+manipules	manipule
+silicocalcaires	silicocalcaire
+cohésion	cohésion
+réunît	réunir
+spirilles	spirille
+FORS	fors
+milicienne	milicien
+édificateur	édificateur
+annale	annal
+Cologne	Cologne
+décherrai	déchoir
+décrassant	décrasser
+élucident	élucider
+impatientait	impatienter
+purpurines	purpurin
+fantastiques	fantastique
+polysynthétiques	polysynthétique
+sécherie	sécherie
+sacro-coccygien	sacro-coccygien
+entonnant	entonner
+Empoisonneurs	empoisonneur
+MARION	Marion
+polluante	polluant
+surfondue	surfondu
+Atropos	atropos
+Urbanisé	urbaniser
+corégents	corégent
+Bénis	bénir
+tétraédriques	tétraédrique
+goûteux	goûteux
+Orsay	Orsay
+épiceries	épicerie
+interalliées	interallié
+minot	minot
+bité	biter
+vidéoclub	vidéoclub
+catégorielle	catégoriel
+Gueules	gueuler
+fonctionnalités	fonctionnalité
+relayaient	relayer|relayer
+encenseur	encenseur
+parsemé	parsemer
+bavardes	bavard
+parvenions	parvenir
+Fascinant	fasciner
+Furias	furia
+mirlitonnant	mirlitonner
+abouche	aboucher
+discounts	discount
+Nord-Américaine	Nord-Américain
+Ébaucher	ébaucher
+fouiner	fouiner
+réanimeront	réanimer
+Bugaku	bugaku
+gorgerins	gorgerin
+commenterait	commenter
+shi'ite	shi'ite
+Scriptural	scriptural
+débrouillarde	débrouillard
+aziliens	azilien
+USDB	USDB
+intoxinations	intoxination
+assiérait	asseoir
+marcaires	marcaire
+pelée	pelé
+Acéphales	acéphale
+Tagals	tagal
+lovées	lover
+comptable	comptable
+ralentissent	ralentir
+IDES	ide|ides
+psycholinguistique	psycholinguistique
+vicissitudes	vicissitude
+scolarisés	scolariser
+Interroger	interroger
+apportions	apporter
+iraquiennes	iraquien
+baissa	baisser
+convulsivothérapie	convulsivothérapie
+assis	asseoir
+vitriolage	vitriolage
+amadouait	amadouer
+croîtraient	croître
+Cafetiers	cafetier
+crevez	crever
+abandonneras	abandonner
+incroyances	incroyance
+décapsidation	décapsidation
+lorgnaient	lorgner
+occupasse	occuper
+décimétriques	décimétrique
+radiaire	radiaire
+assaillent	assaillir
+molestant	molester
+hauteurs	hauteur
+concéder	concéder
+glissées	glisser
+déblaiement	déblaiement
+arbalestiers	arbalestier
+repus	repaître
+stromboliennes	strombolien
+mycéliens	mycélien
+Rebouteux	rebouteux
+fécondent	féconder
+trypanosome	trypanosome
+EXACTE	exact
+ennuiera	ennuyer
+troublante	troublant
+Trémolites	trémolite
+parage	parage
+Perpète	perpète
+consumèrent	consumer
+entamure	entamure
+Maudites	maudit
+dévitrification	dévitrification
+Éclaboussé	éclabousser
+opposa	opposer
+maux	mal
+localisent	localiser
+déchainent	déchainer
+boxé	boxer
+bonzerie	bonzerie
+rigolard	rigolard
+Hématome	hématome
+polémiste	polémiste
+gigoteuse	gigoteur
+protecteurs	protecteur
+syriaques	syriaque
+Damas	Damas
+perfectibles	perfectible
+masures	masure
+monosexués	monosexué
+martiennes	martien
+habituée	habituer
+éventrera	éventrer
+surfaits	surfait
+révolutionnariste	révolutionnariste
+gémit	gémir
+Dieux	Dieu
+fluctua	fluctuer
+mâchonnaient	mâchonner
+propageaient	propager
+intégrèrent	intégrer
+joncha	joncher
+Empirisme	empirisme
+modulateurs	modulateur
+Absurdité	absurdité
+moelleuse	moelleux
+congruence	congruence
+déjeuna	déjeuner
+tamponner	tamponner
+hyperactif	hyperactif
+rebutés	rebuter
+coxalgique	coxalgique
+laborantins	laborantin
+crosnes	crosne
+sisymbre	sisymbre
+papillons	papillon
+CHÂTEAU	Château
+défoncements	défoncement
+surnommés	surnommer
+crochu	crochu
+Rectifications	rectification
+rouquins	rouquin
+trébuchantes	trébuchant
+rémissible	rémissible
+absorbants	absorbant
+Obéissant	obéir
+Délignage	délignage
+chasuble	chasuble
+Rabâcher	rabâcher
+dactylographes	dactylographe
+bues	boire
+Véhicules	véhicule
+toussaint	toussaint
+hautes	haut
+Surprise-Partie	surprise-partie
+aluni	alunir
+Pétéchial	pétéchial
+consultée	consulter
+sublimées	sublimer
+aboutirons	aboutir
+peupleraient	peupler
+bicarbonates	bicarbonate
+charreterie	charreterie
+divergeassent	diverger
+mesurât	mesurer
+bressan	bressan
+Talonnade	talonnade
+dioscures	dioscures
+Inhumanité	inhumanité
+édicta	édicter
+Pédiatre	pédiatre
+enseignent	enseigner
+Bises	bis
+RIChelieu	Richelieu
+induvies	induvie
+dizain	dizain
+Revêtue	revêtir
+chanfreiné	chanfreiner
+surchauffés	surchauffé
+regorgeraient	regorger
+pèseraient	peser
+stérigmates	stérigmate
+tuée	tuer
+panachure	panachure
+Curieusement	curieusement
+contrôlée	contrôler
+whigs	whig
+portraiturés	portraiturer
+Accessibles	accessible
+brouet	brouet
+aliénèrent	aliéner
+vampirise	vampiriser
+Hyperfonctionnement	hyperfonctionnement
+autodestruction	autodestruction
+élastiquement	élastiquement
+Multinationale	multinational
+marcottages	marcottage
+enrayeraient	enrayer
+fatigants	fatigant
+soutes	soute
+détentrices	détenteur
+JOSÉPHINE	joséphine
+Cueilleuse	cueilleur
+Pilotant	piloter
+golgotha	golgotha
+innovés	innover
+reléguées	reléguer
+jalaps	jalap
+interdis	interdire
+cténoïde	cténoïde
+Postale	postal
+camelotes	camelote
+Présenter	présenter
+horodaté	horodaté
+mandement	mandement
+encombrerait	encombrer
+louves	louve
+inhalateurs	inhalateur
+sautillants	sautillant
+prodiguera	prodiguer
+déchirante	déchirant
+appellerions	appeler
+espadrilles	espadrille
+ressac	ressac
+coopérants	coopérant
+surcharge	surcharge
+meurtries	meurtrir
+transsude	transsuder
+dictera	dicter
+vissa	visser
+exciterait	exciter
+pastoureaux	pastoureaux
+amplifies	amplifier
+polyèdre	polyèdre
+ÉLEVÉ	élever
+épistate	épistate
+socio-affectifs	socio-affectif
+jaquets	jaquet
+chargeaient	charger
+versera	verser
+extradurales	extradural
+Idéologue	idéologue
+formalismes	formalisme
+exaspérait	exaspérer
+Marathon	Marathon
+partisan	partisan
+distinctes	distinct
+lanterniste	lanterniste
+revole	revoler
+bupreste	bupreste
+égareront	égarer
+cavalières	cavalier
+englober	englober
+bétoires	bétoire
+dédommager	dédommager
+ministères	ministère
+périlleux	périlleux
+Duteil	Duteil
+malinoise	malinois
+assécherait	assécher
+pintas	pinter
+homosexualités	homosexualité
+reprocherez	reprocher
+Actuariat	actuariat
+retransmettaient	retransmettre
+effarer	effarer
+protéiniques	protéinique
+lavages	lavage
+Arguant	arguer
+accouplements	accouplement
+Pénale	pénal
+Angoras	angora
+orang	orang
+démoralisé	démoraliser
+néo-fascismes	néo-fascisme
+reproduites	reproduire
+confusionniste	confusionniste
+frugalité	frugalité
+laryngites	laryngite
+orthocentrique	orthocentrique
+monocarpiques	monocarpique
+élèvera	élever
+Ressourcer	ressourcer
+mirabellier	mirabellier
+cristallisait	cristalliser
+microlithiques	microlithique
+faisaient	faire
+Soldats	soldat
+métencéphale	métencéphale
+Brise-Ménage	brise-ménage
+Tablées	tablée
+bimétallique	bimétallique
+redevenons	redevenir
+signora	signora
+appareillages	appareillage
+retracent	retracer
+muscardine	muscardine
+Shintoïsme	shintoïsme
+architecturaux	architectural
+cannibalisées	cannibaliser
+fil-de-fériste	fil-de-fériste
+fumoirs	fumoir
+démontrassent	démontrer
+connaîtra	connaître
+sénéchaux	sénéchal
+lagotriche	lagotriche
+Prestation	prestation
+Dilatations	dilatation
+non-possédants	non-possédant
+sémaphores	sémaphore
+expertes	expert
+SuCRE	sucre
+plus-que-parfait	plus-que-parfait
+charretées	charretée
+caléidoscope	caléidoscope
+proposables	proposable
+IdE	ide
+AUGMENTE	augmenter
+panislamique	panislamique
+boisons	boiser
+huipils	huipil
+gémissant	gémir
+rétorquent	rétorquer
+tirettes	tirette
+détissait	détisser
+honorifique	honorifique
+idéophone	idéophone
+archine	archine
+diocèse	diocèse
+biotype	biotype
+pourriez	pouvoir
+Paramilitaires	paramilitaire
+Latéralisation	latéralisation
+atomisme	atomisme
+infecta	infecter
+Éclaircissons	éclaircir
+remîmes	remettre
+influera	influer
+langouste	langouste
+pallieraient	pallier
+livresque	livresque
+Déclencher	déclencher
+Insectarium	insectarium
+allantoïde	allantoïde
+doux	doux
+sursaut	sursaut
+Meurthe	Meurthe
+nuirez	nuire
+paît	paître
+indiciblement	indiciblement
+frayes	fraye
+aveuglée	aveugler
+antistatique	antistatique
+Ombragée	ombrager
+Jeûnez	jeûner
+manuellement	manuellement
+PROCÉDÉ	procédé
+Isonomie	isonomie
+dactylographier	dactylographier
+Suivons	suivre
+prendrions	prendre
+libériens	libérien
+dramatisé	dramatiser
+frottantes	frottant
+Toussaint-Louverture	Toussaint-Louverture
+bimétalliques	bimétallique
+déferré	déferrer
+amollit	amollir
+cachez	cacher
+spiders	spider
+allodiaux	allodial
+lithographiée	lithographier
+violentent	violenter
+Modernisateur	modernisateur
+proscrivant	proscrire
+islamiste	islamiste
+cyclotouriste	cyclotouriste
+parviendrait	parvenir
+rayée	rayer|rayer
+dyslexie	dyslexie
+Suivait	suivre
+tambourins	tambourin
+désherbés	désherber
+technicisé	techniciser
+rasantes	rasant
+démantèlements	démantèlement
+enveloppeuse	enveloppeur
+nettoyez	nettoyer
+antérieure	antérieur
+exempts	exempt
+Totalisant	totaliser
+tractoire	tractoire
+CIMES	cime
+shoot	shoot
+Poursuivent	poursuivre
+Organigramme	organigramme
+Bruyante	bruyant
+latinisent	latiniser
+Trieuse	trieuse
+logis	logis
+Bulle	bulle
+Napoléoniens	napoléonien
+gêneraient	gêner
+colombine	colombine
+huîtrières	huîtrière
+festonnée	festonner
+ménagers	ménager
+richement	richement
+Préposée	préposer
+pragmatistes	pragmatiste
+jaffas	jaffer
+Vice-recteur	vice-recteur
+navigations	navigation
+commerciale	commercial
+ménageront	ménager
+porte-objet	porte-objet
+coulon	coulon
+ferromagnétiques	ferromagnétique
+Messagers	messager
+nasalisé	nasaliser
+blatère	blatérer
+Oiseuse	oiseux
+exceptionnelles	exceptionnel
+fédéraux	fédéral
+revisitera	revisiter
+flasher	flasher
+Écluses	écluse
+Pompons	pompon
+brushings	brushing
+cristallisés	cristalliser
+épaulaient	épauler
+Vigoureusement	vigoureusement
+ressemblance	ressemblance
+contrebalancé	contrebalancer
+inspecteur	inspecteur
+Turbidite	turbidite
+imprévisions	imprévision
+chicotin	chicotin
+gouaches	gouache
+désencombrement	désencombrement
+Progression	progression
+Dédoublement	dédoublement
+cryoniques	cryonique
+Déchristianisation	déchristianisation
+anosmiques	anosmique
+Salamine	Salamine
+suturant	suturer
+Présidents	président
+échancrée	échancrer
+anticyclone	anticyclone
+amollies	amollir
+Rétrospectives	rétrospectif
+bancable	bancable
+Infidèlement	infidèlement
+ravissaient	ravir
+amphibole	amphibole
+pât	pât
+Déformations	déformation
+usagères	usager
+paravalanche	paravalanche
+kriegspiels	kriegspiel
+assurable	assurable
+adjugent	adjuger
+bouzine	bouzine
+Paraplégie	paraplégie
+atteignons	atteindre
+affronteront	affronter
+macro-instructions	macro-instruction
+inséparable	inséparable
+éphémères	éphémère
+Utilise	utiliser
+nidificatrices	nidificateur
+ophidienne	ophidien
+entremêlement	entremêlement
+égalisés	égaliser
+étruscologue	étruscologue
+matons	maton
+demanderiez	demander
+Pitt	Pitt
+flamboyaient	flamboyer
+Nunchaku	nunchaku
+Harcelez	harceler
+générât	générer
+aldéhyde	aldéhyde
+psalmodie	psalmodie
+fesses	fesse
+demi-espaces	demi-espace
+lût	lire
+Écloseries	écloserie
+Abouter	abouter
+sclérifiée	sclérifier
+lardées	larder
+TRInité	trinité
+soudage	soudage
+voltages	voltage
+provenances	provenance
+gambadaient	gambader
+Semblaient	sembler
+inaperçu	inaperçu
+bousculades	bousculade
+comblanchien	comblanchien
+Démonique	démonique
+archières	archière
+renouer	renouer
+ennuya	ennuyer
+mugissement	mugissement
+quadrilobés	quadrilobé
+spore	spore
+ESPACE	espace
+élaboreront	élaborer
+instigateurs	instigateur
+stéatites	stéatite
+Soviétisation	soviétisation
+Tauromachies	tauromachie
+valorisés	valoriser
+Aches	ache
+défausse	défausse
+revivifier	revivifier
+triplace	triplace
+Parotidectomie	parotidectomie
+ostioles	ostiole
+Protègements	protègement
+tabellaire	tabellaire
+galgal	galgal
+auto-adhésifs	auto-adhésif
+Avant-Guerre	avant-guerre
+raconteras	raconter
+neuropharmacologie	neuropharmacologie
+antisoviétisme	antisoviétisme
+spectrogrammes	spectrogramme
+sacrement	sacrement
+Pensiez	penser
+politicaillerie	politicaillerie
+attarderai	attarder
+jojos	jojo
+Aller	aller
+ameublissait	ameublir
+incinérés	incinérer
+éliminant	éliminer
+baptisera	baptiser
+orphisme	orphisme
+artisanes	artisane
+nuageuses	nuageux
+harmoniserait	harmoniser
+centrifuges	centrifuge
+désenchantent	désenchanter
+agrandissement	agrandissement
+pédale	pédale
+reliez	relier
+physiognomonique	physiognomonique
+devant	devant
+obscurcissait	obscurcir
+redresse	redresser
+Criminelle	criminel
+saperas	saper
+désorganisés	désorganiser
+manufacturer	manufacturer
+pommerais	pommer
+sous-exposées	sous-exposer
+adonnés	adonner
+compléta	compléter
+canthares	canthare
+Jessica	Jessica
+prolongerons	prolonger
+salées	salé
+prodiguent	prodiguer
+remballe	remballer
+matricée	matricer
+conversait	converser
+rocheux	rocheux
+glanduleuse	glanduleux
+présidentialiste	présidentialiste
+taupinière	taupinière
+Peignoir	peignoir
+transmisses	transmettre
+périhélies	périhélie
+Difficiles	difficile
+Spirantes	spirant
+érotomane	érotomane
+Patrouilleur	patrouilleur
+Dérives	dérive
+ennéagones	ennéagone
+isosonie	isosonie
+Reformuler	reformuler
+pâtissière	pâtissier
+Prompt	prompt
+sanctifies	sanctifier
+Liseurs	liseur
+redémoli	redémolir
+gagman	gagman
+toxicogène	toxicogène
+miraillé	mirailler
+Implantez	implanter
+bêche-de-mer	bêche-de-mer
+prêtes	prêt
+contraindre	contraindre
+Impliquant	impliquer
+dépensèrent	dépenser
+subsidiaire	subsidiaire
+favisme	favisme
+courçon	courçon
+électives	électif
+comprimés	comprimé
+gallo-romaine	gallo-romain
+réaménagea	réaménager
+tartines	tartine
+sanguine	sanguin
+échaliers	échalier
+maltraitait	maltraiter
+urgente	urgent
+exposa	exposer
+directoriale	directorial
+offrais	offrir
+astronomie	astronomie
+avant-pays	avant-pays
+Muflier	muflier
+mélasse	mélasse
+névroptère	névroptère
+holorime	holorime
+Reprenant	reprendre
+JASMIN	jasmin
+réductones	réductone
+démissionneront	démissionner
+transies	transi
+Synéchies	synéchie
+vêlages	vêlage
+ypérite	ypérite
+fidélités	fidélité
+abaissera	abaisser
+Polyalcool	polyalcool
+Duumvirat	duumvirat
+oxalide	oxalide
+greluches	greluche
+Saint-Cyr	Saint-Cyr
+virga	virga
+figement	figement
+sensuel	sensuel
+défoulement	défoulement
+Hydrographique	hydrographique
+interprétatives	interprétatif
+simulant	simuler
+fredons	fredon
+Barnacle	barnacle
+dynasties	dynastie
+gémissait	gémir
+Contre-pied	contre-pied
+synchronisées	synchroniser
+écorné	écorner
+aussière	aussière
+méharistes	méhariste
+perhydrol	perhydrol
+Passing-shot	passing-shot
+millimes	millime
+Palmée	palmer
+bougeoirs	bougeoir
+Dévoiler	dévoiler
+pavez	paver
+Grassette	grassette
+alourdira	alourdir
+XXXVIIe	XXXVIIe
+procures	procure
+médiats	médiat
+tends	tendre
+Hyperespace	hyperespace
+panels	panel
+déblocage	déblocage
+ecclésiastique	ecclésiastique
+recrutèrent	recruter
+Élan	élan
+confucianiste	confucianiste
+sertit	sertir
+Sacrifiant	sacrifier
+chefS	chef
+Créant	créer
+unissant	unir
+Répression	répression
+antibourgeoise	antibourgeois
+introjectées	introjecter
+radioguidage	radioguidage
+épilés	épiler
+poireauter	poireauter
+signalisés	signaliser
+sublinguale	sublingual
+irréalisée	irréalisé
+édulcorer	édulcorer
+Lavoir	lavoir
+pointeries	pointerie
+dyades	dyade
+ragusaine	ragusain
+balustra	balustrer
+historicisme	historicisme
+Encan	encan
+éthiopiens	éthiopien
+émietter	émietter
+expirée	expirer
+récompensait	récompenser
+piété	piété
+Reformulé	reformuler
+aryballes	aryballe
+déchant	déchant
+RER	RER
+transférerait	transférer
+poursuivraient	poursuivre
+Arrière-Pays	arrière-pays
+misérable	misérable
+Désinences	désinence
+aval	aval
+forçant	forcer
+fritter	fritter
+décollable	décollable
+Brouetteur	brouetteur
+coloriés	colorier
+mendigot	mendigot
+gaussa	gausser
+thrombosé	thrombosé
+ministre-présidente	ministre-président
+prothésistes	prothésiste
+Imams	imam
+aboutissants	aboutissant
+Radome	radome
+corinthien	corinthien
+qualifiez	qualifier
+enfermement	enfermement
+féline	félin
+sanctionnerait	sanctionner
+domestiquées	domestiqué
+raccommode	raccommoder
+paravertébrale	paravertébral
+ignorées	ignorer
+xanthie	xanthie
+bossués	bossuer
+contactait	contacter
+jalonnaient	jalonner
+Notoire	notoire
+Niant	nier
+feuillardier	feuillardier
+Leucite	leucite
+désaltéra	désaltérer
+Impérialismes	impérialisme
+balivernes	baliverne
+herpétiques	herpétique
+brûlaient	brûler
+bouvière	bouvier|bouvière
+jaffe	jaffe
+propulsèrent	propulser
+dépilant	dépiler
+contactez	contacter
+omnisport	omnisport
+coutils	coutil
+incarcéreront	incarcérer
+effraient	effrayer
+salops	salop
+Touchons	toucher
+biparti	biparti
+sûre	sûr
+superposées	superposer
+roideur	roideur
+mulâtresse	mulâtre
+front	front
+officialisera	officialiser
+trilobée	trilobé
+trempage	trempage
+stationnerait	stationner
+extinctif	extinctif
+parr	parr
+va-vite	va-vite
+pelliculées	pelliculé
+progéniteurs	progéniteur
+concourir	concourir
+récusables	récusable
+luttez	lutter
+Coquins	coquin
+mahaleb	mahaleb
+gravèrent	graver
+Pachas	pacha
+alkyles	alkyle
+SYNAPSE	synapse
+étayait	étayer|étayer
+Défini	définir
+haïmes	haïr
+élis	élire
+géologiquement	géologiquement
+Écoutant	écouter
+escalator	escalator
+tombantes	tombant
+farads	farad
+compensons	compenser
+planteraient	planter
+présidentiel	présidentiel
+Réinterprétés	réinterpréter
+persuadaient	persuader
+digères	digérer
+fermentées	fermenter
+acquissiez	acquérir
+mouds	moudre
+accoupla	accoupler
+autodestructeurs	autodestructeur
+inconnaissable	inconnaissable
+Congratulé	congratuler
+viscaria	viscaria
+faustiens	faustien
+cordial	cordial
+tour-opérateur	tour-opérateur
+Briquer	briquer
+Bureaux	bureau
+aquariums	aquarium
+Rogueries	roguerie
+porte-savon	porte-savon
+faisons	faire
+fourra	fourrer
+conspuent	conspuer
+taise	taire
+Déduits	déduit
+Tentacules	tentacule
+procure	procurer
+race	race
+helvétisme	helvétisme
+radioastronomique	radioastronomique
+BOB	Bob
--- a/test/test_alignment.py	Wed Jan 23 12:06:55 2013 +0100
+++ b/test/test_alignment.py	Fri Feb 15 10:37:39 2013 +0100
@@ -17,11 +17,15 @@
 # with this program. If not, see <http://www.gnu.org/licenses/>.
 
 import unittest2
+import sys, os
 import random
 random.seed(6) ### Make sure tests are repeatable
 import numpy as np
+import shutil
+from contextlib import contextmanager
 
 from os import path
+from tempfile import mkdtemp
 from dateutil import parser as dateparser
 
 from nazca.distances import (levenshtein, soundex, soundexcode,   \
@@ -31,12 +35,23 @@
                                  roundstr, rgxformat, tokenize, simplify)
 import nazca.matrix as am
 from nazca.minhashing import Minlsh
-from nazca.dataio import parsefile, autocasted
+from nazca.dataio import parsefile, autocasted, split_file
 import nazca.aligner as alig
 
 
 TESTDIR = path.dirname(__file__)
 
+@contextmanager
+def tempdir():
+    try:
+        temp = mkdtemp()
+        yield temp
+    finally:
+        try:
+            shutil.rmtree(temp)
+        except:
+            pass
+
 class DistancesTest(unittest2.TestCase):
     def test_levenshtein(self):
         self.assertEqual(levenshtein('niche', 'chiens'), 5)
@@ -259,6 +274,25 @@
         self.assertEqual(autocasted(u'tété'), u'tété')
         self.assertEqual(autocasted('tété', encoding='utf-8'), u'tété')
 
+    def test_split_file(self):
+        NBLINES = 190
+        with tempdir() as outputdir:
+            file2split = path.join(TESTDIR, 'data', 'file2split')
+            files = split_file(file2split, outputdir, nblines=NBLINES)
+
+            alllines = []
+            nbfiles = len(files)
+            for num, localpath in enumerate(sorted(files)):
+                fullpath = path.join(outputdir, localpath)
+                with open(fullpath) as fobj:
+                    lines = fobj.readlines()
+                # All files, except the last one, must be NBLINES-length.
+                if num < nbfiles - 1:
+                    self.assertEqual(len(lines), NBLINES)
+                alllines.extend(lines)
+
+            with open(file2split) as fobj:
+                self.assertEqual(fobj.readlines(), alllines)
 
 class AlignerTestCase(unittest2.TestCase):