La meg starte direkte ved å spørre, trenger vi virkelig Python å lese store tekstfiler? Ville ikke vår normale tekstbehandler eller tekstredigerer nok for det? Når jeg nevner stor her, mener jeg ekstremt store filer!
Vel, la oss se noen bevis på om vi trenger Python for å lese slike filer eller ikke.
For å utføre vårt eksperiment trenger vi en ekstremt stor tekstfil. I denne opplæringen vil vi få denne filen fra UCSC Genome Bioinformatics nedlastingsnettsted. Filen vi skal bruke spesielt er hg38.fa.gz
fil, som som beskrevet her er:
"Mjukmaskert" monteringssekvens i en fil. Gjentakelser fra RepeatMasker og Tandem Repeats Finder (med 12 eller mindre) vises i små bokstaver; Ikke-gjentakende sekvens er vist i store bokstaver.
Jeg vil ikke at du trenger å bekymre deg hvis du ikke forstod ovennevnte uttalelse, som det er knyttet til genetikk-terminologi. Det som betyr noe i denne opplæringen er begrepet å lese ekstremt store tekstfiler ved hjelp av Python.
Gå videre og last ned hg38.fa.gz
(vær forsiktig, filen er 938 MB). Du kan bruke 7-zip for å pakke ut filen, eller et annet verktøy du foretrekker.
Etter at du har pakket ut filen, vil du få en fil som heter hg38.fa
. Gi nytt navn til hg38.txt
for å skaffe en tekstfil.
Hva jeg mener her på den tradisjonelle måten, bruker vår tekstbehandler eller tekstredigerer til å åpne filen. La oss se hva som skjer når vi prøver å gjøre det.
Jeg prøvde først å bruke Microsoft Word for å åpne filen, og fikk følgende melding:
Selv om åpningen av filen ikke fungerte med WordPad og Notisblokk på en Windows-basert maskin, åpnet den med TextEdit på en Mac OS X-maskin.
Men du får poenget, og å ha noen garantert måte å åpne slike ekstremt store filer ville være en fin idé. I dette raske tipset vil vi se hvordan du gjør det ved hjelp av Python.
I denne delen skal vi se hvordan vi kan lese vår store fil ved hjelp av Python. La oss si at vi ønsket å lese de første 500 linjene fra vår store tekstfil. Vi kan bare gjøre følgende:
input_file = open ('hg38.txt', 'r') output_file = åpen ('output.txt', 'w') for linjer i rekkevidde (500): linje = input_file.readline () output_file.write (linje)
Legg merke til at vi leser 500 linjer fra hg38.txt
, linje for linje, og skrev disse linjene til en ny tekstfil output.txt
, som skal se som vist i denne filen.
Men si at vi ønsket å navigere direkte gjennom tekstfilen uten å trekke den ut linje for linje og sende den til en annen tekstfil, spesielt siden denne måten virker mer fleksibel.
Selv om trinnene ovenfor gjorde det mulig for oss å lese store tekstfiler ved å trekke ut linjer fra den store filen og sende disse linjene til en annen tekstfil, ville det være en foretrukket idé å navigere direkte gjennom den store filen uten å måtte trekke ut linjen for linje..
Vi kan ganske enkelt gjøre det ved å bruke Python til å lese tekstfilen via terminalskjermbildet som følger (navigerer gjennom filen 50 linjer av gangen):
input_file = open ('hg38.txt', 'r') mens (1): for linjer i rekkevidde (50): skriv inn input_file.readline () user_input = raw_input ('Skriv STOP for å avslutte, ellers trykk Enter / Return-tasten ') hvis user_input ==' STOP ': break
Som du kan se fra dette skriptet, kan du nå lese og navigere gjennom den store tekstfilen umiddelbart ved hjelp av terminalen din. Når du vil slutte, trenger du bare å skrive STOPPE
(saksfølsom) i terminalen din.
Jeg er sikker på at du vil merke hvor glatt Python gjør det å navigere gjennom en ekstremt stor tekstfil uten å ha noen problemer. Python viser seg igjen å være et språk som strever for å gjøre livet enklere!