csv.Erreur: champ plus grand que la limite du champ (131072)

j'ai un script qui lit dans un fichier csv avec des champs énormes:

# example from http://docs.python.org/3.3/library/csv.html?highlight=csv%20dictreader#examples
import csv
with open('some.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

cependant, cela jette l'erreur suivante sur certains fichiers csv:

_csv.Error: field larger than field limit (131072)
132
demandé sur user1251007 2013-02-25 13:38:02

4 réponses

le fichier csv peut contenir de très grands champs, donc augmenter le field_size_limit :

import sys
import csv

csv.field_size_limit(sys.maxsize)

sys.maxsize travaille pour Python 2.x et 3.x. sys.maxint ne fonctionnerait qu'avec Python 2.x ( DONC: quel-est-sys-exemple maxint-en-python-3 )

mise à Jour

comme L'a souligné Geoff, le code ci-dessus pourrait entraîner l'erreur suivante: OverflowError: Python int too large to convert to C long . Pour contourner cela, vous pouvez utiliser le suivant rapide et sale code (qui devrait fonctionner sur tous les systèmes avec Python 2 et Python 3):

import sys
import csv
maxInt = sys.maxsize
decrement = True

while decrement:
    # decrease the maxInt value by factor 10 
    # as long as the OverflowError occurs.

    decrement = False
    try:
        csv.field_size_limit(maxInt)
    except OverflowError:
        maxInt = int(maxInt/10)
        decrement = True
199
répondu user1251007 2018-01-16 12:21:42

cela pourrait être parce que votre fichier CSV a intégré des guillemets simples ou doubles. Si votre fichier CSV est délimité par un onglet, essayez de l'ouvrir comme suit:

c = csv.reader(f, delimiter='\t', quoting=csv.QUOTE_NONE)
114
répondu CSP 2013-08-23 17:52:10

ci-dessous est de vérifier la limite actuelle

csv.field_size_limit()

[20]: 131072

ci-Dessous est d'augmenter la limite. Ajoutez-le au code

csv.field_size_limit(100000000)

essayer de vérifier à nouveau la limite

csv.field_size_limit()

[22]: 100000000

Maintenant vous n'obtiendrez pas l'erreur" _csv.Erreur: champ plus grand que la limite de champ (131072) "

6
répondu Tad 2018-03-20 14:28:37

parfois,une ligne contient une double colonne citation. Lorsque le lecteur csv essayer de lire cette ligne, pas compris fin de colonne et le feu cette augmentation. La Solution est ci-dessous:

reader = csv.reader(cf, quoting=csv.QUOTE_MINIMAL)
0
répondu Ahmet Erkan ÇELİK 2017-08-14 14:51:52