Эффективное чтение CSV-файла с Windows Newline на Linux в Python - PullRequest
2 голосов
/ 23 февраля 2010

Следующее работает под окнами для чтения CSV-файлов построчно.

f = open(filename, 'r')

for line in f:

Хотя при копировании файла csv на сервер linux происходит сбой.

Следует отметить, что производительность является проблемой, так как файлы CSV огромны. Поэтому меня беспокоит копирование строк при использовании таких вещей, как полоса.

Ответы [ 5 ]

7 голосов
/ 23 февраля 2010

Python имеет встроенную поддержку концов строк Windows, Linux и Mac:

f = open(filename, 'rtU')

for line in f:
    ...

Если вы действительно хотите, чтобы медленные строковые операции не выполнялись, вы должны удалить файлы перед их обработкой. Вы можете использовать dos2unix (можно найти в пакете Debian «tofrodos») или (проще) использовать текстовый режим FTP, который должен делать это автоматически.

6 голосов
/ 23 февраля 2010

Если важна производительность, почему вы не используете csv.reader?

4 голосов
/ 23 февраля 2010

Ммм .... У вас есть CSV-файлы, вы используете Python, почему бы не прочитать файлы с помощью модуля Python CSV?

1 голос
/ 23 февраля 2010

Утилита dos2unix сделает это очень эффективно. Если файлы такого размера, я бы запустил эту команду как часть копии.

0 голосов
/ 23 февраля 2010

На самом деле, наиболее эффективный способ чтения любого файла - это один большой ввод-вывод. Для этого не всегда достаточно оперативной памяти, но чем меньше операций ввода-вывода, тем лучше.

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