Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Gyorstipp: Hogyan olvass be extrém hosszú szöveges fájlokat Python segítségével

by
Length:ShortLanguages:

Hungarian (Magyar) translation by Viktor Istvan Csaszar (you can also view the original English article)

Kezdjük azzal, hogy egy-az-egyben megkérdem, tényleg Pythonra van szükségünk nagy szöveges fájlok olvasásához? Nem lenne ehhez elég a szokásos szófeldolgozónk vagy szövegszerkesztőnk? Amikor a nagy szót használom, akkor valójában extrém módon nagy fájlokra gondolok!

Nos, nézzünk meg néhány evidenciát, hogy kell-e nekünk a Python az ilyen fájlok olvasásához vagy sem?

A fájl beszerzése

Hogy végrehajtsuk a kísérletünket, egy extrém módon nagy szöveges állományra lesz szükségünk. Ebben az útmutatóban ezt a fájlt az UCSC Genome Bioinformatics letöltési weboldalról szerezzük be. Pontosabban az a fájl, amit felhasználunk, a hg38.fa.gz fájl, amely, ahogy itt bemutatásra került, egy:

"Soft-masked" assembly szekvencia egy állományban. A RepeatMasker és Tandem Repeats Finder ismétlései (12 vagy kevesebb sorozatban) kisbetűvel jelöltek, míg a nem ismétlődő sorozat nagybetűvel van jelölve.

Nem szeretném, ha azon idegeskednél, hogy nem érted a fenti mondatokat, mivel ezek a genetika terminológiájához tartoznak. Ami fontos ennek az útmutatónak, az az extrém méretű szöveges állományok olvasásának koncepciója Python segítségével.

Kezdjük el, és töltsük le a hg38.fa.gz fájlt (légy óvatos, a fájl 938 MB). Használhatod a 7-zip programot a fájl kibontásához, vagy bármely más eszközt, melyet előnyben részesítesz.

A fájl kibontása után kapsz egy hg38.fa elnevezésű állományt. Nevezd ét hg38.txt névre, hogy egy szöveges állományt kapj.

A fájl megnyitása a hagyományos módon

A hagyományos mód alatt azt értem, hogy egy szófeldolgozó vagy szövegszerkesztővel nyitjuk meg a fájlt. Lássuk, mi történik, ha megpróbáljuk.

Először a Microsoft Wordöt használtam a fájl megnyitásához, s a következő üzenetet kaptam:

Microsoft Word cant open a file because its too large

Habár a fájlt sem a WordPad, sem a Jegyzettömb nem nyitotta meg egy Windows-os gépen, a Mac OS X alatt futó TextEdit megnyitotta.

Ettől függetlenül gondolom látod a lényeget, s egy garantált megoldás továbbra is jó lenne a hasonlóan extrém nagy méretű szöveges állományok megnyitásához. Ebben a gyorstippben megmutatom, hogyan tedd meg ezt Python segítségével.

Szöveges állomány olvasása Python segítségével

Ebben a szekcióban megnézzük, hogyan tudjuk beolvasni a nagy állományunkat Python segítségével. Mondjuk azt, hogy szeretnénk elolvasni a nagy állományunk első 500 sorát. Ehhez egyszerűen csak a következőket kell tennünk:

A hg38.txt fájlból soronként kiolvasunk 500 sort, s beírjuk ezeket egy új szöveges állományba, amelynek output.txt a neve. Ennek úgy kell kinéznie, mint ebben a fájlban.

De mondjuk azt, hogy mi közvetlenül a szöveges fájlban szeretnénk navigálni, anélkül, hogy soronként kibontatnánk, s bemásolnánk egy másik fájlba - különösen azért, mert ez a megoldás sokkal rugalmasabb lenne.

Navigálás nagyméretű szöveges állományokban

Habár a fenti megoldás lehetővé tette számunkra nagyméretű szöveges állományok olvasását, soronkénti kibontását, s ezen sorok új szöveges állományba másolását, a kibontás nélküli navigáció a nagy állományban sokkal jobb megoldás lenne.

Ezt egyszerűen megtehetjük Python segítségével, ahol a szöveges állományt a terminál képernyőről a következő megoldással olvashatjuk be (egyszerre a fájl 50 során keresztülnavigálva):

Ahogy a szkriptből láthatod, most már azonnal keresztülnavigálhatsz a nagyméretű szöveges állományon, csupán a terminál használatával. Amikor meg szeretnéd állítani a folyamatot, csak üsd be a STOP szót a terminálodba, a nagybetűkre is figyelve.

Biztos vagyok benne, hogy már látod, mennyire egyszerű a Python segítségével keresztül navigálni ilyen extrém nagyméretű szöveges állományokon, bármilyen probléma nélkül. A Python megint bebizonyította, hogy képes könnyebbé tenni az életünket!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.