использование модуля CSV с readline () - PullRequest
0 голосов
/ 25 августа 2011

Вчера я разместил ссылку ниже: Модуль Python CSV для чтения и записи одновременно

Несколько человек предложили мне: «Если файл b не очень большой, я бы предложил использовать readlines (), чтобы получить список всех строк, а затем выполнить итерацию по списку и изменить строки по мере необходимости».

Я хочу по-прежнему иметь возможность использовать функциональность модуля CSV, но делать то, что они предложили. Я новичок в Python и до сих пор не совсем понимаю, как мне это сделать.

Может ли кто-нибудь дать мне пример того, как я должен это сделать.

1 Ответ

0 голосов
/ 25 августа 2011

Вот пример, который читает файл CSV с помощью DictReader и использует DictWriter для записи в стандартный вывод.В файле есть столбец с именем PERCENT_CORRECT_FLAG, и это изменяет CSV-файл, устанавливая для этого поля значение 0.

#!/usr/bin/env python
from __future__ import with_statement
from __future__ import print_function

from csv import DictReader, DictWriter
import sys

def modify_csv(filename):
    with open(filename) as f:
        reader = DictReader(f)
        writer = DictWriter(sys.stdout, fieldnames=reader.fieldnames)
        for i, s in enumerate(writer.fieldnames):
            print(i, s, file=sys.stdout)
        for row in reader:
            row['PERCENT_CORRECT_FLAG'] = '0'
            writer.writerow(row)

if __name__ == '__main__':
    for filename in sys.argv[1:]:
        modify_csv(filename)

Если вы не хотите записывать в стандартный вывод, вы можете открыть другой файл для записи и использовать его.,Обратите внимание, что если вы хотите записать обратно в исходный файл, вам необходимо:

  1. Считать файл в память и закрыть файл перед открытием для записи или

  2. Откройте файл с другим именем для записи и переименуйте его после закрытия.

...