Чтение / запись CSV как двоичного файла с Python - PullRequest
1 голос
/ 23 сентября 2010

Я только что узнал, что могу сэкономить место \ ускорить чтение CSV-файлов.

Используя ответ на мой предыдущий вопрос Как создать файл CSV из базы данных на Python?

И 'wb' для открытий

  w = csv.writer(open(Fn,'wb'),dialect='excel')

Как открыть все файлы в каталоге и сохранить все файлы с тем же именем, что и начальное имя, и использовать 'wb' для переформатирования всех файлов.Я думаю, конвертировать все CSV в двоичные CSV.

1 Ответ

4 голосов
/ 23 сентября 2010

Вы не можете "перезаписать файл на лету". У вас есть два варианта:

  1. , если файлы достаточно малы (меньше, чем объем доступной оперативной памяти на удобное поле), просто зациклите их (os.listdir делает этот цикл легко, или os.walk, если вы хотите поймать все дерево подкаталогов, не только один каталог), и для каждого, сначала прочитайте его в памяти, затем перезаписать копию на диске.

  2. в противном случае зациклите их и пишите каждый раз в новый файл (например, добавив .new к имени), затем переместите новый файл поверх старого. это безопаснее (нет риска нехватки памяти, нет риска повреждения файла, если компьютер вылетает) но сложнее.

Итак, является вашей ситуацией: достаточно маленьких файлов (и резервных копий для защиты от сбоев компьютера и диска), в этом случае я могу, если хотите, показать простой код; или огромные файлы размером в несколько ГБ - в каком случае это будет сложный код? Дайте нам знать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...