2015-12-10 1 views
1

Je tente d'ouvrir un fichier pcap comme siErreur Python int trop grand pour convertir en C long résolu en ajoutant rb tag. Pourquoi?

file = open('hello.pcap')

et il est de retour d'une erreur OverflowError: Python int too large to convert to C long.

Après avoir regardé autour sur le web, j'ai trouvé une solution d'ajouter rb comme si

file = open('hello.pcap' , 'rb')

et maintenant il fonctionne parfaitement.

Deux questions:

Quelle est l'erreur référence?

Et je comprends que r signifie LIRE seulement et b signifie ouvert en binaire, mais pourquoi ai-je besoin d'ajouter le fichier rb dans ce scénario spécifique?

Je suis avec this tutorial et il ne semble pas que le gars utilise l'étiquette rb.

+0

Utilisez-vous Python 2 ou 3? –

+0

@ MikeMüller utilise Python 2.7 – user3277633

+0

Êtes-vous sur Windows? –

Répondre

2

Vous devez ouvrir le fichier en binaire. Alors que vous pouvez passer le rb (mais ne devrait pas) sur les systèmes Unix, vous devez l'avoir sous Windows. Probable que le tutoriel a été écrit sur un système Unix.

0

Il est possible que votre fichier source soit codé en en format binaire et non en format ASCII/UTF-8 (i.e: text). Si c'est le cas, les données doivent être lues et gérées comme binaires (en essayant de les encoder en tant que texte, cela causerait la corruption de vos données)

+0

"Vous pouvez avoir un nombre à virgule flottante défini en Python que vous ne pourriez jamais avoir en C juste à cause de la limitation du type de données en C." Incorrect. 'float' en Python correspond exactement à' double' en C. Et 'decimal.Decimal' est un point fixe, pas de virgule flottante. –

+0

@ IgnacioVazquez-Abrams Désolé je pensais entiers. Correction de l'affichage. –

1

pcap s sont des fichiers binaires et non des fichiers texte. Vous devez ouvrir les fichiers binaires en tant que binaire.