Python 2.7.1: как открыть, изменить и закрыть файл CSV

У меня возникли проблемы с открытием файла (amount2.csv), внесшего изменения, сохранение и закрытие файла.

Как открыть файл, сохранить и закрыть его?

import csv changes = { '1 dozen' : '12' } with open('amount2.csv', 'r') as f: reader = csv.reader(f) print f f.close() 

моя ошибка: открыть файл 'amount2.csv', режим 'r' на 0x1004656f0 (<> удален)

  • Как ConfigParse файл, сохраняющий несколько значений для идентичных ключей?
  • Преобразование временной зоны Datetime с использованием pytz
  • Доступ к атрибутам на литералах работает на всех типах, но не `int`; Зачем?
  • Ошибка при установке с помощью pip
  • Tkinter: рисовать прямоугольник с помощью мыши
  • pip терпит неудачу с AttributeError: объект 'module' не имеет атрибутов 'wraps'
  • Импортировать локальный модуль поверх глобального python
  • Разделить большой текстовый файл (около 50 ГБ) на несколько файлов
  • 2 Solutions collect form web for “Python 2.7.1: как открыть, изменить и закрыть файл CSV”

     <open file 'amount2.csv', mode 'r' at 0x1004656f0> 

    вы видите, это не ошибка, а результат вашего «print f». Чтобы вместо этого видеть содержимое вашего файла, вы бы сделали

     with open('test.csv', 'rb') as f: reader = csv.reader(f) for row in reader: # row is a list of strings # use string.join to put them together print ', '.join(row) 

    Чтобы добавить строки в ваш файл, вместо этого выполните

     changes = [ ['1 dozen','12'], ['1 banana','13'], ['1 dollar','elephant','heffalump'], ] with open('test.csv', 'ab') as f: writer = csv.writer(f) writer.writerows(changes) 

    Дополнительная информация в Python CSV Docs

    РЕДАКТИРОВАТЬ:

    Сначала я неправильно понял, вы хотите изменить все записи от «1 дюжины» до «12» в вашем файле csv. Сначала скажу, что это проще сделать без использования модуля csv, но вот решение, использующее его.

     import csv new_rows = [] # a holder for our modified rows when we make them changes = { # a dictionary of changes to make, find 'key' substitue with 'value' '1 dozen' : '12', # I assume both 'key' and 'value' are strings } with open('test.csv', 'rb') as f: reader = csv.reader(f) # pass the file to our csv reader for row in reader: # iterate over the rows in the file new_row = row # at first, just copy the row for key, value in changes.items(): # iterate over 'changes' dictionary new_row = [ x.replace(key, value) for x in new_row ] # make the substitutions new_rows.append(new_row) # add the modified rows with open('test.csv', 'wb') as f: # Overwrite the old file with the modified rows writer = csv.writer(f) writer.writerows(new_rows) 

    Если вы новичок в программировании и python, самая трофюретическая линия, вероятно,

     new_row = [ x.replace(key, value) for x in new_row ] 

    но это просто понимание списка, которое эффективно эквивалентно

     temp = [] for x in new_row: temp.append( x.replace(key, value) ) new_row = temp 

    Вы пытаетесь распечатать сам объект файла, который не будет полезен. Вы посмотрели документацию для модуля CSV ? В самом первом примере кода показано, как использовать csv.reader.

    Python - лучший язык программирования в мире.