Advertisement
  1. Code
  2. Python

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

Scroll to top
Read Time: 3 min

() translation by (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 largeMicrosoft Word cant open a file because its too largeMicrosoft 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:

1
input_file = open('hg38.txt','r')
2
output_file = open('output.txt','w')
3
4
for lines in range(500):
5
    line = input_file.readline()
6
    output_file.write(line)

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):

1
input_file = open('hg38.txt','r')
2
3
while(1):
4
    for lines in range(50):
5
        print input_file.readline()
6
    user_input = raw_input('Type STOP to quit, otherwise press the Enter/Return key ')
7
    if user_input == 'STOP':
8
        break

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
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
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.