Låt mig börja direkt genom att fråga, behöver vi verkligen Python att läsa stora textfiler? Skulle inte vår vanliga ordbehandlare eller textredigerare vara tillräcklig för det? När jag nämner stort här menar jag ytterst stora filer!
Tja, låt oss se några bevis på om vi skulle behöva Python för att läsa sådana filer eller inte.
För att utföra vårt experiment behöver vi en extremt stor textfil. I denna handledning kommer vi att få denna fil från UCSC Genome Bioinformatics nedladdningswebbplats. Filen vi ska använda speciellt är hg38.fa.gz
fil, som beskrivs här är:
"Mjuk maskerad" monteringssekvens i en fil. Upprepningar från RepeatMasker och Tandem Repeats Finder (med 12 eller mindre) visas i små bokstäver; Icke-repeterande sekvens visas i övrigt.
Jag vill inte att du oroa dig om du inte förstod ovanstående uttalande, eftersom det är relaterat till genetik terminologi. Vad som är viktigt i denna handledning är konceptet att läsa extremt stora textfiler med Python.
Fortsätt och ladda ner hg38.fa.gz
(var försiktig, filen är 938 MB). Du kan använda 7-zip för att pakka ut filen eller något annat verktyg du föredrar.
När du har tagit bort filen kommer du att få en fil som heter hg38.fa
. Byt namn på den till hg38.txt
för att få en textfil.
Vad jag menar här på det traditionella sättet använder vi vår textbehandlare eller textredigerare för att öppna filen. Låt oss se vad som händer när vi försöker göra det.
Jag försökte först använda Microsoft Word för att öppna filen och fick följande meddelande:
Även om filen öppnades inte fungerade med WordPad och Anteckningsblock på en Windows-baserad maskin, öppnades den med TextEdit på en Mac OS X-maskin.
Men du får poängen, och det är en bra idé att ha några garanterade sätt att öppna sådana extremt stora filer. I det här snabba tipset får vi se hur man gör det med Python.
I det här avsnittet ska vi se hur vi kan läsa vår stora fil med Python. Låt oss säga att vi ville läsa de första 500 linjerna från vår stora textfil. Vi kan helt enkelt göra följande:
input_file = open ('hg38.txt', 'r') output_file = öppen ('output.txt', 'w') för linjer inom intervallet (500): line = input_file.readline () output_file.write
Observera att vi läser 500 linjer från hg38.txt
, linje för rad, och skrev de här raderna till en ny textfil output.txt
, vilken ska se som visas i den här filen.
Men säg att vi ville direkt navigera genom textfilen utan att extrahera den linjen för rad och skicka den till en annan textfil, särskilt eftersom det här sättet verkar mer flexibelt.
Även om ovanstående steg tillät oss att läsa stora textfiler genom att extrahera rader från den stora filen och skicka dessa linjer till en annan textfil, skulle det vara en föredragen idé att direkt navigera genom den stora filen utan att behöva extrahera den linjen för rad..
Vi kan helt enkelt göra det genom att använda Python för att läsa textfilen via terminalskärmen enligt följande (navigering genom filen 50 linjer i taget):
input_file = open ('hg38.txt', 'r') medan (1): för linjer inom intervallet (50): skriv in input_file.readline () user_input = raw_input ('Skriv STOP för att sluta, annars tryck Enter / Return-tangenten ') om user_input ==' STOP ': break
Som du kan se från det här skriptet kan du nu läsa och navigera genom den stora textfilen direkt med din terminal. När du vill sluta behöver du bara skriva SLUTA
(skiftlägeskänslig) i din terminal.
Jag är säker på att du kommer att märka hur smidig Python gör det att navigera genom en så extremt stor textfil utan några problem. Python visar sig återigen vara ett språk som strävar efter att göra våra liv enklare!