J'ai un fichier "text.txt" qui fait actuellement 1,1 Mo. Je veux le diviser en fichiers texte de 50 Ko. J'utiliserais une boucle si je pouvais readlines () le fichier, mais comme il s'agit d'une longue chaîne, je ne suis pas sûr de pouvoir le faire.

2
natalie 14 juil. 2015 à 05:00

2 réponses

Meilleure réponse

Ouvrez le fichier, configurez un octet range pour parcourir, puis seek() à cet emplacement, read() dans le contenu et, s'il y avait du contenu, écrivez-le dans un nouveau fichier. S'il n'y a pas de contenu, break hors de la boucle.

with open('myfile.txt', 'r') as f:
    for place in range(0, int(2e6), 50000):
        f.seek(place)
        content = f.read(50000)
        if content:
            with open('myfile{}.txt'.format(place), 'w') as o:
                o.write(content)
        else:
            break
4
TigerhawkT3 14 juil. 2015 à 02:18

Vous pouvez utiliser la commande split. Par exemple,: -

split -b 50k text.txt.

Si vous voulez faire cela à partir de python, vous pouvez utiliser subprocess.check_call ()

0
rohithvsm 14 juil. 2015 à 02:32