J'essaie de lire 2 fichiers en même temps, mais je reçois une "trop de valeurs pour déballer l'erreur". Voici ce que j'ai:
for each_f, each_g in f, g :
line_f = each_f.split()
line_g = each_g.split()
3 Réponses :
import itertools
# ...
for each_f, each_g in itertools.izip(f, g):
# ...
Importer iTertools code> pourrait être nécessaire.
Ce n'est peut-être pas évident pour op, d'où le commentaire.
@shahkalpeh Ok, je crois toujours que c'est vraiment évident, mais je vais l'ajouter à ma réponse au cas où ...
Merci pour la modification. Je suis un débutant en python aussi. La même chose peut-elle être obtenue sans utiliser itertools?
@shahkalpeh Oui, mais cela vous oblige à lire manuellement à partir de chacun des fichiers de temps en boucle de While, car une boucle de boucle ne peut itérer sur un seul itérateur à la fois. IZIP CODE> fusionne les deux itérateurs en une pour que la boucle de commande puisse fonctionner dessus.
@Kirelagin: En fait, iTertools pourrait être une bonne chose. Juste pensé à vérifier si vous utilisez un tuple, cela peut être fait?
@shahkalpeh non, il ne peut pas être fait en utilisant un tuple. Vous avez besoin d'un générateur d'envelopper une paire de générateurs et d'obtenir suivant code> à partir de deux en même temps. Vous pouvez y parcourir manuellement, cependant.
Comme @cheppner a noté dans sa réponse izip code> rompt dès que le court terme des deux fichiers se termine. Quelque chose à garder à l'esprit.
Il y a aussi iziplongest va fournir Aucun code> (ou une valeur spécifiée par l'utilisateur) pour l'itérateur plus court jusqu'à épuisement plus long.
Vous pouvez utiliser un gestionnaire de contexte, c'est-à-dire l'instruction avec la lecture de deux fichiers en même temps:
with open('file1', 'r') as a, open('file2', 'r') as b:
do_something_with_a_and_b
Je pense que cela ne devrait pas être évité comme celui-ci; Ceci est une réponse simple au titre de la question, qui n'arrive pas à ne pas coïncider avec le vrai problème. C'est le titre qui devrait être réparé à quelque chose comme trop de valeurs pour déballer pour la boucle code>
sans utiliser ceci sort de la boucle dès que le plus court des deux fichiers est épuisé, comme mais vraiment, iTertools code>: izip code> fait aussi. p> iTERTOOLS code> est la solution supérieure. p> p>