from csv import reader
nfl = list(reader(open("nfl.csv")))
или вот так:
import csv
f = open("my_data.csv")
csvreader = csv.reader(f)
my_data = list(csvreader)
Имеет ли значение, если я напишу код первым способом? Он такой же быстрый, как второй? Как это пишется в реальной корпоративной жизни?
документация дает примеры правильного чтения файлов CSV.
@AkshayNevrekar, это особенно тяжелая зависимость для чтения файлов CSV, если OP еще не имеет pandas для какой-либо другой цели
@roganjosh Итак, я могу повторить, если мне не нужны все данные? Но что будет, если файл останется открытым? Есть ли риск, что он может быть случайно отредактирован кем-то извне? Или просто кушает память ПК?
Я не уверен, что понимаю вопрос. Вы говорите о параллельном доступе к файлу?
@roganjosh Верно, это возможно?






Ни один из методов не идеален, потому что вы хотите, чтобы файл был закрыт в конце. Для этой цели вы можете использовать with, чтобы убедиться, что файл закрыт после того, как вы закончите его обработку. Это позволяет избежать ошибок, при которых вы могли бы забыть вызвать .close() для файла. Более подробную информацию о менеджерах контекста можно найти в здесь. Примеры этого можно увидеть в документация.
Итак, что-то вроде:
with open('my_data.csv') as infile:
reader = csv.reader(infile)
data = list(reader)
Обратите внимание, однако, что при этом в память загружается все содержимое файла. Как показывают примеры документации, вы можете вместо этого перебирать объект reader, если вам не нужен весь файл в памяти.
Вероятно, он не использует ни один из методов, но второй, вероятно, лучше. Вы должны использовать диспетчер контекста
withдля обработки файлов, поскольку это гарантирует, что файл будет закрыт в конце. Кроме того, хотите ли вы, чтобы все строки были в одном списке, потому что может быть желательно перебирать считыватель строка за строкой, если вам не обязательно нужны все данные?