J'ai un gros transfert de fichiers (dire 4gb environ) et plutôt que d'utiliser shutil, je suis juste d'ouvrir et d'écrire le chemin de fichier normal que je peux inclure un pourcentage de progression lors de son déplacement le long de.Reprise d'un fichier volumineux écriture en Python
Il vint alors à moi d'essayer de tenter de reprendre l'écriture de fichiers, si pour une raison quelconque, il foireuse au cours du processus. Cependant, je n'ai pas eu de chance. Je supposais que ce serait une combinaison intelligente de compenser la lecture du fichier source et d'utiliser la recherche, mais je n'ai pas eu de chance jusqu'à présent. Des idées?
De plus, est-il une sorte de façon dynamique pour comprendre ce que la taille de bloc à utiliser lors de la lecture et l'écriture de fichiers? Je suis assez novice dans ce domaine, et je viens de lire pour utiliser une taille plus grande pour un fichier plus grand (j'utilise 65536 pour le moment). Y a-t-il une façon intelligente de le faire, ou devine-t-on simplement ...? Merci les gars.
Voici l'extrait de code du transfert de fichier appending:
newsrc = open(src, 'rb')
dest_size = os.stat(destFile).st_size
print 'Dest file exists, resuming at block %s' % dest_size
newsrc.seek(dest_size)
newdest = open(destFile, 'a')
cur_block_pos = dest_size
# Start copying file
while True:
cur_block = newsrc.read(131072)
cur_block_pos += 131072
if not cur_block:
break
else:
newdest.write(cur_block)
Il n'ajoute et commencer à écrire, mais il écrit alors dest_size plus de données à la fin que prévu pour des raisons probablement évidentes au reste de toi. Des idées?
Qu'est-ce qui se passe mal avec le transfert de fichiers? –
Pouvez-vous nous montrer votre tentative d'ajout au fichier? Vous devriez être capable de chercher et de continuer à écrire. Ouvrez-vous en utilisant le mode "a"? –
Rien ne s'est vraiment mal passé avec le transfert de fichiers. Mais au fur et à mesure que je développe ce code qui déplace des fichiers de plus de 6 Go sur un réseau, il est bon de pouvoir le lancer pour observer de nouveaux changements et le reprendre là où il s'était arrêté sur les gros transferts de fichiers. J'ai ajouté le code à l'op. – Cryptite