Laat ik beginnen direct door te vragen, hebben we echt Python nodig om grote tekstbestanden te lezen? Zou onze normale tekstverwerker of teksteditor daar niet voldoende voor zijn? Als ik hier groot zeg, bedoel ik uiterst grote bestanden!
Laten we eens kijken of we Python nodig hebben om dergelijke bestanden te lezen of niet.
Voor het uitvoeren van ons experiment hebben we een extreem groot tekstbestand nodig. In deze tutorial zullen we dit bestand verkrijgen van de UCSC Genome Bioinformatics downloads-website. Het bestand dat we in het bijzonder zullen gebruiken is het hg38.fa.gz
bestand, dat zoals hier beschreven is:
"Soft-gemaskeerde" montagevolgorde in één bestand. Herhalingen van RepeatMasker en Tandem Repeats Finder (met een periode van 12 of minder) worden in kleine letters getoond; niet-herhalende reeks wordt in hoofdletters weergegeven.
Ik wil niet dat je je zorgen maakt als je bovenstaande verklaring niet begrijpt, omdat het te maken heeft met de terminologie van de Genetica. Het belangrijkste in deze tutorial is het concept van het lezen van extreem grote tekstbestanden met behulp van Python.
Ga je gang en download hg38.fa.gz
(wees voorzichtig, het bestand is 938 MB). U kunt 7-zip gebruiken om het bestand of een ander hulpmiddel dat u verkiest uit te pakken.
Nadat u het bestand uitgepakt hebt, krijgt u een bestand met de naam hg38.fa
. Hernoem het naar hg38.txt
om een tekstbestand te verkrijgen.
Wat ik hier op de traditionele manier bedoel is met behulp van onze tekstverwerker of teksteditor om het bestand te openen. Laten we eens kijken wat er gebeurt als we dat proberen.
Ik probeerde eerst Microsoft Word te gebruiken om het bestand te openen en kreeg het volgende bericht:
Hoewel het openen van het bestand ook niet werkte met WordPad en Notepad op een Windows-computer, werd het wel geopend met TextEdit op een Mac OS X-computer.
Maar je begrijpt het wel, en het hebben van een gegarandeerde manier om zulke extreem grote bestanden te openen zou een leuk idee zijn. In deze snelle tip zullen we zien hoe we dat kunnen doen met Python.
In deze sectie gaan we kijken hoe we ons grote bestand met Python kunnen lezen. Laten we zeggen dat we de eerste 500 regels uit ons grote tekstbestand wilden lezen. We kunnen eenvoudig het volgende doen:
input_file = open ('hg38.txt', 'r') output_file = open ('output.txt', 'w') voor regels binnen bereik (500): line = input_file.readline () output_file.write (regel)
Merk op dat we 500 regels lezen van hg38.txt
, regel voor regel en schreef die regels naar een nieuw tekstbestand output.txt
, welke eruit zou moeten zien zoals in dit bestand.
Maar zeg dat we direct door het tekstbestand wilden navigeren zonder het regel voor regel eruit te halen en dat naar een ander tekstbestand te sturen, vooral omdat deze manier flexibeler lijkt.
Hoewel de bovenstaande stap ons toestaat om grote tekstbestanden te lezen door lijnen uit dat grote bestand te extraheren en die regels naar een ander tekstbestand te verzenden, zou het rechtstreeks door het grote bestand navigeren zonder dat het regel voor regel moet worden geëxtraheerd, een idee dat de voorkeur heeft.
We kunnen dat eenvoudig doen door Python te gebruiken om het tekstbestand als volgt via het terminalscherm te lezen (door 50 regels tegelijkertijd te navigeren):
input_file = open ('hg38.txt', 'r') while (1): voor regels binnen bereik (50): print input_file.readline () user_input = raw_input ('Typ STOP om te stoppen, druk anders op de Enter / Return-toets ') als user_input ==' STOP ': pauze
Zoals u kunt zien aan de hand van dit script, kunt u nu het grote tekstbestand lezen en direct door uw terminal navigeren. Wanneer u wilt stoppen, hoeft u alleen maar te typen HOU OP
(hoofdlettergevoelig) in uw terminal.
Ik weet zeker dat je zult opmerken hoe soepel Python het maakt om door zo'n extreem groot tekstbestand te navigeren zonder problemen op te lopen. Python bewijst opnieuw dat het een taal is die ernaar streeft ons leven gemakkelijker te maken!