Python csv 读取器表现异常

0 投票
1 回答
1021 浏览
提问于 2025-04-15 23:00

好吧,如果我运行这段错误的代码:

csvReader1 = csv.reader(file('new_categories.csv', "rU"), delimiter=',')
for row1 in csvReader1:
    print row1[0]
    print row1[8]
    category_sku = str(row[8])
    if category_sku == sku:
        classifications["Craft"] = row[0]
        classifications["Theme"] = row[1]

我得到的结果是:

    Knitting
    391
    Traceback (most recent call last):
      File "upload_all_inventory_ebay.py", line 403, in <module>
        inventory_item_list = get_item_list(product)
      File "upload_all_inventory_ebay.py", line 294, in get_item_list
        category_sku = str(row[8])
    NameError: global name 'row' is not defined

在这里,“Knitting”和“391”是完全正确的,当然我需要把row[8]改成row1[8]...所以我这样做:

    csvReader1 = csv.reader(file('new_categories.csv', "rU"), delimiter=',')
    for row1 in csvReader1:
        print row1[0]
        print row1[8]
        category_sku = str(row1[8])
        if category_sku == sku:
            classifications["Craft"] = row1[0]
            classifications["Theme"] = row1[1]

然后我得到这个:

...........
Crochet
107452
Knitting
107454
Knitting
107455
Knitting
107456
Knitting
107457
Crochet
108200
Crochet
108201
Crochet
108205
Crochet
108213
Crochet
108214
Crochet
108217

108432
Quilt
108451

108482

108488
Scrapbooking
108711
Knitting
122363
Needlework

Beading

Crafts & Decorating

Crochet

Crochet

Crochet

Traceback (most recent call last):
  File "upload_all_inventory_ebay.py", line 403, in <module>
    inventory_item_list = get_item_list(product)
  File "upload_all_inventory_ebay.py", line 292, in get_item_list
    print row1[0]
IndexError: list index out of range

你看到的输出是第0列和第1列的所有内容!!!!!!!!为什么会这样?还有,为什么row1[0]会超出范围,而之前却没有?耶,星期五快乐!

1 个回答

2

输出结果包含了每一行的结果,因为你在打印每一行的第1列和第9列。

row1[0] 超出了范围,因为那一行没有任何内容。如果 row1 里没有任何东西,你就无法访问它的第一个项目。你需要在每次循环中检查一下 row1 是否有内容。

撰写回答