У нас есть большой файл необработанных данных, который мы хотели бы обрезать до указанного размера. Я имею опыт работы с .net c #, однако хотел бы сделать это на python, чтобы упростить вещи и из интереса.
Как бы я получить первые N строк текстового файла в Python? Повлияет ли используемая ОС на реализацию?
Ответы:
Python 2
Python 3
Вот еще один способ (оба Python 2 и 3)
источник
источник
f = open("file")
обработку без исключения, чтобы закрыть файл. Pythonic способ обработки файлов - с помощью менеджера контекста, то есть с помощью оператора with. Это описано в учебнике Python по вводу-выводу ."It is good practice to use the with keyword when dealing with file objects. This has the advantage that the file is properly closed after its suite finishes, even if an exception is raised on the way."
Если вы хотите быстро прочитать первые строки и не заботитесь о производительности, вы можете использовать
.readlines()
метод, который возвращает объект списка, а затем разбивает список на части.Например, для первых 5 строк:
Одним из преимуществ по сравнению с другими ответами является возможность легко выбирать диапазон строк, например, пропуская первые 10
[10:30]
или последние 10 строк[:-10]
или занимая только четные строки[::2]
.источник
Что я делаю, так это для вызова N строк
pandas
. Я думаю, что производительность не самая лучшая, но, например, еслиN=1000
:источник
nrows
опцию, которая может быть установлена в 1000, и весь файл не загружен. pandas.pydata.org/pandas-docs/stable/generated/… В общем, у pandas есть этот и другие методы экономии памяти для больших файлов.sep
чтобы определить разделитель столбцов (который не должен появляться в файлах, отличных от CSV)pandas.read()
функцию в документации, знаете ли вы какую-либо информацию по этому вопросу?Не существует конкретного метода для чтения количества строк, отображаемых объектом файла.
Я думаю, что самый простой способ будет следующим:
источник
Основано на ответе gnibbler, получившем наибольшее количество голосов (20 ноября 2009 г. в 0:27): этот класс добавляет метод head () и tail () к объекту файла.
Использование:
источник
Два наиболее интуитивных способа сделать это:
Итерации по файлу построчно и
break
послеN
строк.Перебирайте файл построчно, используя
next()
методN
times. (По сути, это просто другой синтаксис того, что делает верхний ответ.)Вот код:
Суть в том, что если вы не используете
readlines()
или неenumerate
сохраняете весь файл в памяти, у вас есть много вариантов.источник
Самый удобный способ для себя:
Решение, основанное на понимании списка Функция open () поддерживает итерационный интерфейс. Enumerate () покрывает кортежи open () и return (index, item), затем мы проверяем, что мы находимся в допустимом диапазоне (если i <LINE_COUNT), а затем просто выводим результат.
Наслаждайся Питоном. ;)
источник
[next(file) for _ in range(LINE_COUNT)]
.Для первых 5 строк просто сделайте:
источник
Если вы хотите что-то, что, очевидно, (без поиска эзотерических вещей в руководствах) работает без импорта и попробуйте / исключая и работает на достаточном диапазоне версий Python 2.x (от 2.2 до 2.6):
источник
Если у вас действительно большой файл, и предполагается, что вы хотите, чтобы вывод был массивом, использование np.genfromtxt остановит ваш компьютер. Это намного лучше в моем опыте:
источник
Начиная с Python 2.6, вы можете воспользоваться более сложными функциями в базовом предложении IO. Таким образом, ответ с наивысшим рейтингом можно переписать так:
(Вам не нужно беспокоиться о том, что ваш файл содержит менее N строк, поскольку не генерируется исключение StopIteration.)
источник
lines
но аргумент ссылается наbytes
.Это сработало для меня
источник
Это работает для Python 2 и 3:
источник
источник
Этот метод работал для меня
источник