Je travaille sur un script qui la lecture d'un dossier de fichiers(chaque taille allant de 20 MO à 100 MO), modifie certaines données dans chaque ligne, et écrit sur une copie du fichier.
with open(inputPath, 'r+') as myRead:
my_list = myRead.readlines()
new_my_list = clean_data(my_list)
with open(outPath, 'w+') as myWrite:
tempT = time.time()
myWrite.writelines('\n'.join(new_my_list) + '\n')
print(time.time() - tempT)
print(inputPath, 'Cleaning Complete.')
Sur l'exécution de ce code avec un 90 MB fichier (~de 900 000 lignes), c'imprimé 140 secondes que le temps consacré à l'écriture dans le fichier. Ici, j'ai utilisé writelines()
. J'ai donc cherché des moyens différents pour permettre d'améliorer la vitesse d'écriture, et dans la plupart des articles que j'ai lu, il dit write()
et writelines()
ne doit pas présenter de différence depuis que je suis en train d'écrire une seule chaîne concaténée. J'ai aussi vérifié le temps pris pour seulement la suite de la déclaration:
new_string = '\n'.join(new_my_list) + '\n'
Et il a fallu que de 0,4 seconde, de sorte que le grand a pris le temps n'était pas à cause de la création de la liste.
Juste pour essayer write()
j'ai essayé ce code:
with open(inputPath, 'r+') as myRead:
my_list = myRead.readlines()
new_my_list = clean_data(my_list)
with open(outPath, 'w+') as myWrite:
tempT = time.time()
myWrite.write('\n'.join(new_my_list) + '\n')
print(time.time() - tempT)
print(inputPath, 'Cleaning Complete.')
Et c'imprimé 2,5 secondes. Pourquoi il y a une grande différence dans l'écriture de fichier temps pour write()
et writelines()
, même si c'est les mêmes données? Est-ce un comportement normal ou est-il quelque chose qui cloche dans mon code? Le fichier de sortie semble être la même dans les deux cas, donc je sais qu'il n'y a pas de perte de données.