Après avoir écrit dans un fichier, pourquoi os.path.getsize renvoie-t-il toujours la taille précédente?
Je suis en train de diviser un grand fichier xml en petits morceaux. J'écris dans le fichier de sortie, puis vérifier la taille pour voir si son passé un seuil, mais je ne pense pas que le getsize() la méthode fonctionne comme prévu.
Ce serait un bon moyen pour obtenir la taille d'un fichier qui est en train de changer la taille.
Ive fait quelque chose comme ça...
import string
import os
f1 = open('VSERVICE.xml', 'r')
f2 = open('split.xml', 'w')
for line in f1:
if str(line) == '</Service>\n':
break
else:
f2.write(line)
size = os.path.getsize('split.xml')
print('size = ' + str(size))
l'exécution de cette affiche " 0 " comme la taille du fichier d'environ 80 itérations puis 4176. Python stocker le résultat dans une mémoire tampon avant la sortie?
source d'informationauteur Maulin
Vous devez vous connecter pour publier un commentaire.
Oui, Python est la mémoire tampon de sortie. Vous seriez mieux de suivi de la taille vous-même, quelque chose comme ceci:
(Qui peut ne pas être précis à 100%, par exemple. sur Windows chaque ligne de gain d'un octet en raison de la
\r\n
séparateur de ligne, mais il devrait être assez bon pour simple de segmentation.)La taille du fichier est différente de la position dans le fichier. Par exemple,
Exactement retourne la taille du fichier en octets.
Mais
Ici f.tell() renvoie la position actuelle du gestionnaire de fichier - c'est à dire où l'écriture suivante sera de mettre ses données. Car il est conscient de la mise en mémoire tampon, il doit être précise aussi longtemps que vous êtes tout simplement en ajoutant dans le fichier de sortie.
Avez-vous essayé de remplacer les os.chemin d'accès.getsize avec os.dire, comme ceci:
Le suivi de la taille vous conviendra parfaitement pour votre cas. Une autre façon serait de vider les tampons de fichier juste avant vous de vérifier la taille:
Fait que, trop souvent, va ralentir fichier I/O, bien sûr.
Pour trouver le décalage à la fin d'un fichier:
L'exemple du monde réel - lire les mises à jour d'un fichier et de les imprimer comme ils se produisent: