Файлы питон: Работа с файлами

Содержание

Файлы в Python OTUS

Статья расскажет о работе с файлами в Python: о вводе и выводе, открытии, чтении, записи, закрытии и выполнении других не менее важных операций.

Файл представляет собой набор данных, сохраненных на компьютере, причем каждый файл имеет название — filename (имя файла, name of file).

В языке программирования Python выделяют 2 вида файлов:

— текстовые;

— бинарные.

Поговорим о каждом из типов подробнее.

Текстовые файлы. Формат .txt

Содержимое таких файлов вполне понятно человеку. То есть речь идет об обычных общепринятых символах, тексте, цифрах и т. п. Такие документы можно без проблем создавать, открывать, читать и редактировать Блокнотом и прочими простейшими редакторами.

Также важно отметить, что текст хранят не только в форме .txt, но и в формате.rtf (так называемом «формате обогащенного текста»).

Бинарные файлы. Формат .bin

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

Основные операции

По сути, практически любую операцию с файлом мы можем разделить на 3 главных этапа:

  1. Открытие.
  2. Непосредственно выполнение операции (чтение, запись).
  3. Закрытие.

Открытие. Метод open

В «Питоне» существует встроенная функция open. Используя ее, вы сможете открыть файл на персональном компьютере. Технически, речь идет о создании на основе файла объекта.

Синтаксис относительно прост:

f = open(file_name, access_mode)

Что здесь что:

  • file_name — это имя файла, который надо открыть;
  • access_mode — это режим открытия файла. Это может быть чтение, запись и так далее. Если ничего не указать, будут справедливы настройки по умолчанию, те есть станет использоваться режим чтения (r).

Полный список режимов открытия смотрите в таблице ниже:

В качестве примера давайте выполним создание текстового файла test. txt с последующим сохранением его в рабочей директории.

Открыть созданный документ можно в режиме чтения из рабочей директории:

f = open('test.txt','r') 

Здесь f представляет собой переменную-указатель на файл test.txt.

Идем далее. Код ниже выведет содержимое файла и информацию об этом файле.

>>> print(*f) # вывод содержимого

Hello, Otus!

>>> print(f) # вывод объекта

<_io.TextIOWrapper name='test.txt' mode='r' encoding='cp1252'>

Учтите, что в операционной системе «Виндовс» стандартная кодировка — это cp1252, в то время как в Linux — utf-08.

Закрытие. Метод close

Раз открыли, надо и закрыть — это высвободит ресурсы. Язык программирования Python автоматически закроет файл в том случае, если объект будет присвоен другому файлу.

Для закрытия есть несколько вариантов действий.

Вариант №1

Один из наиболее простых способов. Открытый файл закрываем с помощью метода close.

f = open('test.txt','r')

# работаем с файлом

f.close()

Все, документ закрыт (closed). Закрыв его таким образом, вы не сможете его использовать, пока не откроете по новой.

Вариант №2

Можно прописать try/finally. В результате файл закроется автоматически, если операции с ним приведут к исключениям. Закрытие произойдет до того, как остановится программа.

Синтаксис создания исключения следующий:

f = open('test.txt','r')

try:

   # работаем с файлом

finally:

   f.close()

Важно отметить, что файл следует открыть до срабатывания инструкции try.

Вариант №3

В третьем случае пригодится инструкция with, упрощающая обработку исключений посредством инкапсуляции начальных операций, а также задач по очистке и закрытию.

Тут уже инструкция close нужна не будет, так как with закроет файл автоматически.

Реализация в коде относительно проста:

with open('test.txt') as f:

    # работаем с документом

Чтение и запись в файл

Используя соответствующие режимы, можно выполнять чтение информации и ее сохранение (save) в буфер памяти.

Функция read

Применяется для чтения содержимого после открытия документа в режиме чтения (r).

Вот, как это выглядит:

file.read(size)

Что здесь что:

  • file — это объект файла;
  • size — это число символов, которые необходимо прочесть. Если конкретное число не указывать, документ будет прочитан полностью.

>>> f = open('test.txt','r')

>>> f.read(7)  # читаем семь символов из test.txt

Функция readline

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

Для примера создадим test.txt со следующими строками:

This is Otus for developers 1.

This is Otus for developers 2.

This is Otus for developers 3.

И воспользуемся readline:

x = open('test.txt','r')

x.readline()  # читаем первую строку

This is Otus for developers 1.

>>> x.readline(2)  # читаем 2-ю строку

This is Otus for developers 2.

>>> x.readlines()  # читаем все строки сразу

['This is Otus for developers 1.','This is Otus for developers 2.','This is Otus for developers 3.']

Функция write

Чтобы выполнить сохранение, нужно использовать функцию write. Сохранение в буфер памяти возможно только в те документы, которые открыты для записи (их можно сохранять, когда они находятся в соответствующем режиме).

Синтаксис несложен:

file.write(string)

Если вы попытаетесь открыть в данном режиме файл, несуществующий в буфере, будет создан новый. Представим, что файла supertest.txt у нас нет. Однако при попытке его открыть в режиме чтения, он появится:

f = open('supertest.txt','w')  # открываем в режиме записи

f.write('Hello \n Otus')  # пишем Hello Otus в документ

Hello

Otus

f.close()  # закрываем документ

Переименование. Функция rename

Может возникнуть необходимость в переименовании имен файлов (filenames). Вопрос можно решить посредством функции rename. Но чтобы это сделать, сначала надо импортировать модуль os.

Синтаксис:

import os

os.rename(src,dest)

Что здесь что:

  • src — это файловый документ, которому надо изменить name;
  • dest — это новое имя.

Вот, как это выглядит в коде:

import os

# переименовываем otus1.txt в otus2.txt

>>> os. rename("otus1.txt","otus2.txt")

Основные методы

В таблице ниже вы увидите основные методы, которые используются при работе с файлами (files) в «Пайтон»:

Источник

Файлы и исключения в Python

Разрабатывая приложения вам придется работать с файлами, анализировать большие объемы данных, сохранять пользовательские данные, чтобы они не терялись по завершению работы программы. Также при работе с файлами важно научиться обрабатывать ошибки, чтобы они не привели к аварийному завершению программы. Для этого в Python существуют специальные объекты — исключения, которые создаются для управления ошибок.

Содержание страницы:
1. Чтение файла 
    1.2. Чтение больших файлов и работа с ними
    1.3. Анализ текста из файла
2. Запись в файл
    2. 1. Запись в пустой файл
    2.2. Многострочная запись в файл
    2.3. Присоединение данных к файлу
3. Исключения
    3.1. Блоки try-except
    3.2. Блоки try-except-else
    3.3. Блоки try-except с текстовыми файлами
    3.4. Ошибки без уведомления пользователя

 

 

 

 

 

 

 

 

 

 

 

 

1. Чтение файла в Python

В файлах может содержаться любой объем данных, начиная от небольшого рассказа и до сохранения истории погоды за столетия. Чтение файлов особенно актуально для приложений, предназначенных для анализа данных. Приведем пример простой программы, которая открывает файл и выводит его содержимое на экран. В примере я буду использовать файл с числом «Пи» с точностью до 10 знаков после запятой. Скачать этот файл можно прямо здесь ( pi_10.

txt ) или самим создать текстовый файл и сохранить под любым именем. Пример программы, которая открывает файл и выводит содержимое на экран:

with open(‘pi_10.txt’) as file_pi:
    digits = file_pi.read()
print(digits)

Код начинается с ключевого слова with. При использование ключевого слова with используемый файл открывается с помощью функции open(), а закрывается автоматически после завершения блока with и вам не придется в конце вызывать функцию close(). Файлы можно открывать и закрывать явными вызовами open() и close(). Функция open() получает один аргумент — имя открываемого файла, в нашем случае ‘pi_10.txt’. Python ищет указанный файл в каталоге, где хранится файл текущей программы. Функция open() возвращает объект, представляющий файл ‘pi_10.txt’. Python сохраняет этот объект в переменной file_pi .  

После появления объекта, представляющего файл ‘pi_10.txt’, используется метод read(), который читает все содержимое файла и сохраняет его в одной строке в переменной contents.

В конце с помощью функции print содержимое выводится на экран. Запустив этот файл, мы получим данные, находящиеся в нашем файле ‘pi_10.txt’.

3.1415926535

В случае, если файл расположен не в одном каталоге с файлом программы, необходимо указать путь, чтобы Python искал файлы в конкретном месте. Существует два пути как прописать расположение файла:

Относительный путь приказывает Python искать файлы в каталоге, который задается относительно каталога, в котором находится текущий файл программы

with open(‘files/имя_файла.txt’) as file:

  • Абсолютный путь. 

Местонахождение файла не зависит от того, где находится ваша программа. Абсолютные пути обычно длиннее относительных, поэтому их лучше

сохранить в переменную и затем передать функции open(). 

file_path = ‘/Users/Desktop/files/имя_файла.txt’
with open(file_path) as file:

С абсолютными путями можно читать файлы из любого каталога вашей системы.  

 

 

1.2. Чтение больших файлов на Python и работа с ними

В первом примере был файл с 10 знаками после запятой. Теперь давайте проанализируем файл с миллионом знаков числа «Пи» после запятой. Скачать число «Пи» с миллионом знаков после запятой можно отсюда( ‘pi_1000000.txt’ ). Изменять код из первого примера не придется, просто заменим файл, который должен читать Python. 

with open(‘pi_1000000.txt’) as file_pi:
    digits = file_pi.read()
print(digits[:102])
print(len(digits))

Выведем на экран первые 100 знаков после запятой. Добавим в конец функцию len, чтобы узнать длину файла

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679

1000002

Из выходных данных видно, что строка содержит значение «Пи» с точностью до 1 000 000 знаков после запятой. В Python нет никаких ограничений на длину данных, с которыми можно работать, единственное ограничение это объем памяти вашей системы.  

После сохранения данных в переменной можно делать с ними все что угодно. Давайте проверим, входит ли в число «Пи» дата вашего дня рождения. Напишем небольшую программу, которая будет читать файл и проверять входит ли дата день рождения в первый миллион числа «Пи»:

with open(‘pi_1000000.txt’) as file_pi:
    digits = file_pi.read()
birthday = input(«Введите дату дня рождения: «)
if birthday  in digits:
    print(«Ваш день рождение входит в число ‘Пи'»)

else:
    print(«Ваш день рождение не входит в число ‘Пи'»)

Начало программы не изменилось, читаем файл и сохраняем данные в переменной digits. Далее запрашиваем данные от пользователя с помощью функции input и сохраняем в переменную birstday. Затем проверяем вхождение birstday в digits с помощью команды if-else. Запустив несколько раз программу, получим результат:

Введите дату дня рождения: 260786
Ваш день рождение не входит в число ‘Пи’


Введите дату дня рождения: 260884
Ваш день рождение входит в число ‘Пи’

В зависимости от введенных данных мы получили результат вхождения или не вхождения дня рождения в число «Пи»

Важно: Читая данные из текстового файла, Python интерпретирует весь текст как строку.

Если вы хотите работать с ним в числовом контексте, то преобразуйте данные в целое число функцией int() или в вещественное число функцией float().

 

 

1.3. Анализ текста из файла на Python

Python может анализировать текстовые файлы, содержащие целые книги. Возьмем книгу «Алиса в стране чудес» и попробуем подсчитать количество слов в книге. Текстовый файл с книгой можете скачать здесь(‘ alice ‘) или загрузить любое другое произведение. Напишем простую программу, которая подсчитает количество слов в книге и сколько раз повторяется имя Алиса в книге.

filename = ‘alice.txt’

with open(filename, encoding=’utf-8′) as file:
    contents = file.read()
n_alice = contents.lower().count(‘алиса’)
words = contents.split()
n_words = len(words)

print(f»Книга ‘Алиса в стране чудес’ содержит {n_words} слов.»)
print(f»Имя Алиса повторяется {n_alice} раз.»)

При открытии файла добавился аргумент encoding=’utf-8′.

 Он необходим, когда кодировка вашей системы не совпадает с кодировкой читаемого файла. После чтения файла, сохраним его в переменной contents.

Для подсчета вхождения слова или выражений в строке можно воспользоваться методом count(), но прежде привести все слова к нижнему регистру функцией lower(). Количество вхождений сохраним в переменной n_alice

Чтобы подсчитать количество слов в тексе, воспользуемся методом split(), предназначенный для построения списка слов на основе строки. Метод split() разделяет строку на части, где обнаружит пробел и сохраняет все части строки в элементах списка. Пример метода split():

title = ‘Алиса в стране чудес’
print(title.split())

[‘Алиса’, ‘в’, ‘стране’, ‘чудес’]

После использования метода split(), сохраним список в переменной

words и далее подсчитаем количество слов в списке, с помощью функции len(). После подсчета всех данных, выведем на экран результат:

Книга ‘Алиса в стране чудес’ содержит 28389 слов.
Имя Алиса повторяется 419 раз.

 

2.1. Запись в пустой файл в Python

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

filename = ‘memory.txt’

with open(filename, ‘w’) as file:
    file.write(«Язык программирования Python»)

Для начала определим название и тип будущего файла и сохраним в переменную filename. Затем при вызове функции open() передадим два аргумента. Первый аргумент содержит имя открываемого файла. Второй аргумент ‘ w ‘ сообщает Python, что файл должен быть открыт в режиме записи. Во второй строчке метод write() используется для записи строки в файл. Открыв файл ‘

memory.txt ‘ вы увидите в нем строку:

Язык программирования Python

Получившийся файл ничем не отличается от любых других текстовых файлах на компьютере, с ним можно делать все что угодно.  

Важно: Открывая файл в режиме записи ‘ w ‘, если файл уже существует, то Python уничтожит его данные перед возвращением объекта файла.

Файлы можно открывать в режимах:

  • чтение ‘ r ‘
  • запись ‘ w ‘
  • присоединение ‘ a ‘
  • режим как чтения, так и записи ‘ r+ ‘

 

 

2.2. Многострочная запись в файл на Python

При использовании функции write() символы новой строки не добавляются в записываемый файл:

filename = ‘memory.txt’

with open(filename, ‘w’) as file:
    file.write(«Язык программирования Python»)
    file.write(«Язык программирования Java»)
    file.write(«Язык программирования Perl»)

В результате открыв файл мы увидим что все строки склеились:

Язык программирования PythonЯзык программирования JavaЯзык программирования Perl

Для написания каждого сообщения с новой строки используйте символ новой строки \n

filename = ‘memory. txt’

with open(filename, ‘w’) as file:
    file.write(«Язык программирования Python\n»)
    file.write(«Язык программирования Java\n»)
    file.write(«Язык программирования Perl\n»)

Результат будет выглядеть так:

Язык программирования Python
Язык программирования Java
Язык программирования Perl

 

2.3. Присоединение данных к файлу на Python 

Для добавления новых данных в файл, вместо того чтобы постоянно перезаписывать файл, откройте файл в режиме присоединения ‘ a ‘. Все новые строки добавятся в конец файла. Возьмем созданный файл из раздела 2.2 ‘memory.txt’. Добавим в него еще пару строк.

filename = ‘memory.txt’

with open(filename, ‘a’) as file:
    file.write(«Hello world\n»)
    file.write(«Полет на луну\n»)

В результате к нашему файлу добавятся две строки:

Язык программирования Python
Язык программирования Java
Язык программирования Perl
Hello world
Полет на луну

 

 

3.

Исключения в Python

При выполнении программ могут возникать ошибки, для управления ими Python использует специальные объекты, называемые исключениями. Когда в программу включен код обработки исключения, ваша программа продолжится, а если нет, то программа остановится и выведет трассировку с отчетом об исключении. Исключения обрабатываются в блоках try-except. С блоками try-except программы будут работать даже в том случае, если что-то пошло не так.

3.1. Блоки try-except на Python

Приведем пример простой ошибки деления на ноль:

print(7/0)

Traceback (most recent call last):
  File «example.py», line 1, in <module>
    print(7/0)
ZeroDivisionError: division by zero

Если в вашей программе возможно появление ошибки, то вы можете заранее написать блок try-except для обработки данного исключения. Приведем пример обработки ошибки ZeroDivisionError с помощью блока try-except:

try:
    print(7/0)
except ZeroDivisionError:
    print(«Деление на ноль запрещено»)

Команда print(7/0) помещена в блок try. Если код в блоке try выполняется успешно, то Python пропускает блок except.  Если же код в блоке try создал ошибку, то Python ищет блок except и запускает код в этом блоке. В нашем случае в блоке except выводится сообщение «Деление на ноль запрещено». При выполнение этого кода пользователь увидит понятное сообщение:

Деление на ноль запрещено

Если за кодом try-except следует другой код, то Python продолжит выполнение программы. 

 

3.2. Блок try-except-else на Python

Напишем простой калькулятор, который запрашивает данные у пользователя, а затем результат деления выводит на экран. Сразу заключим возможную ошибку деления на ноль  ZeroDivisionError и добавим блок else при успешном выполнение блока try.

while True:
    first_number = input(«Введите первое число: «)
    if first_number == ‘q’:
        break
    second_number = input(«Введите второе число: «)
    if second_number == ‘q’:
        break
    try:
        a = int(first_number) / int(second_number)
    except ZeroDivisionError:
        print(«Деление на ноль запрещено»)
    else:
        print(f»Частное двух чисел равно {a}»)

Программа запрашивает у пользователя первое число (first_number), затем второе (second_number). Если пользователь не ввел » q « для завершения работы программа продолжается. В блок try помещаем код, в котором возможно появление ошибки. В случае отсутствия ошибки деления, выполняется код else и Python выводит результат на экран. В случае ошибки ZeroDivisionError выполняется блок except и выводится сообщение о запрете деления на ноль, а программа продолжит свое выполнение. Запустив код получим такие результаты:

Введите первое число: 30
Введите второе число: 5
Частное двух чисел равно 6.0
Введите первое число: 7
Введите второе число: 0
Деление на ноль запрещено
Введите первое число:  q

В результате действие программы при появлении ошибки не прервалось.

 

 

3.3. Блок  try-except с текстовыми файлами на Python

Одна из стандартных проблем при работе с файлами, это отсутствие необходимого файла, или файл находится в другом месте и Python не может его найти. Попробуем прочитать не существующий файл:

filename = ‘alice_2.txt’

with open(filename, encoding=’utf-8′) as file:
    contents = file.read()

Так как такого файла не существует, Python выдает исключение:

Traceback (most recent call last):
  File «example.py», line 3, in <module>
    with open(filename, encoding=’utf-8′) as file:
FileNotFoundError: [Errno 2] No such file or directory: ‘alice_2.txt’

FileNotFoundError — это ошибка отсутствия запрашиваемого файла. С помощью блока try-except обработаем ее:

filename = ‘alice_2.txt’

try:
    with open(filename, encoding=’utf-8′) as file:
        contents = file.read()
except FileNotFoundError:
    print(f»Запрашиваемый файл {filename } не найден»)

В результате при отсутствии файла мы получим:

Запрашиваемый файл alice_2.txt не найден

 

3.4. Ошибки без уведомления пользователя

В предыдущих примерах мы сообщали пользователю об ошибках. В Python есть возможность обработать ошибку и не сообщать пользователю о ней и продолжить выполнение программы дальше. Для этого блок try пишется, как и обычно, а в блоке except вы прописываете Python не предпринимать никаких действий с помощью команды pass. Приведем пример ошибки без уведомления:

ilename = ‘alice_2.txt’

try:
    with open(filename, encoding=’utf-8′) as file:
        contents = file.read()
except FileNotFoundError:
    pass

В результате при запуске этой программы и отсутствия запрашиваемого файла ничего не произойдет.

 

 

Далее: Функции json. Сохранение данных Python

Назад: Классы в Python

 

Please enable JavaScript to view the comments powered by Disqus.

Управление каталогами и файлами Python (с примерами)

В этом руководстве мы узнаем об управлении файлами и каталогами в Python с помощью примеров.

Каталог — это набор файлов и подкаталогов. Каталог внутри каталога называется подкаталогом.

Python имеет модуль os , который предоставляет нам множество полезных методов для работы с каталогами (а также с файлами).


Получить текущий каталог в Python

Мы можем получить текущий рабочий каталог, используя метод getcwd() модуля os .

Этот метод возвращает текущий рабочий каталог в виде строки. Например,

 импорт ОС
печать (os.getcwd())
# Вывод: C:\Program Files\PyScripter 

Здесь getcwd() возвращает текущий каталог в виде строки.


Изменение каталога в Python

В Python мы можем изменить текущий рабочий каталог, используя метод chdir() .

Новый путь, который мы хотим изменить, должен быть предоставлен этому методу в виде строки. И мы можем использовать как прямую косую черту /, так и обратную косую черту \ для разделения элементов пути.

Давайте посмотрим пример,

 import os
# изменить каталог
os.chdir('C:\\Python33')
печать (os.getcwd())
Вывод: C:\Python33 

Здесь мы использовали метод chdir() для изменения текущего рабочего каталога и передали новый путь в виде строки на чдир() .


Список каталогов и файлов в Python

Все файлы и подкаталоги внутри каталога можно получить с помощью метода listdir() .

Этот метод принимает путь и возвращает список подкаталогов и файлов по этому пути.

Если путь не указан, возвращает список подкаталогов и файлов из текущего рабочего каталога.

 импорт ОС
печать (os.getcwd())
C:\Питон33
# список всех подкаталогов
os.listdir()
['DLL',
'Док',
'включать',
'Либ',
'библиотеки',
'ЛИЦЕНЗИЯ.txt',
'НОВОСТИ.txt',
'python.exe',
'pythonw.exe',
'README.txt',
'Скрипты',
'ткл',
'Инструменты']
os.listdir('G:\\')
['$RECYCLE.BIN',
'Кино',
'Музыка',
'Фото',
'Ряд',
«Информация о системном томе»] 

Создание нового каталога в Python

В Python мы можем создать новый каталог, используя метод mkdir() .

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

 os.mkdir('тест')
os.listdir()
['test'] 

Переименование каталога или файла

Метод rename() может переименовать каталог или файл.

Для переименования любого каталога или файла, rename() принимает два основных аргумента:

  • старое имя в качестве первого аргумента
  • новое имя в качестве второго аргумента.

Давайте посмотрим пример,

 import os
os.listdir()
['контрольная работа']
# переименовать каталог
os.rename('тест','new_one')
os.listdir()
['new_one'] 

Здесь каталог 'test ‘ переименовывается в 'new_one' с использованием метода rename() .


Удаление каталога или файла в Python

В Python мы можем использовать метод remove() или метод rmdir() для удаления файла или каталога.

Сначала воспользуемся remove() для удаления файла,

 import os
# удалить файл "myfile.txt"
os.remove("myfile.txt") 

Здесь мы использовали метод remove() для удаления файла "myfile.txt" .

Теперь воспользуемся rmdir() для удаления пустого каталога,

 import os
# удалить пустой каталог "mydir"
os.rmdir("mydir") 

Чтобы удалить непустой каталог, мы можем использовать метод rmtree() внутри модуля Shutil . Например,

 импортный шатил
# удалить каталог "mydir" и все его содержимое
Shutil.rmtree("mydir") 

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

Чтение и запись файлов CSV

В этом руководстве мы научимся читать и записывать файлы CSV в Python с помощью примеров.

Формат CSV (значения, разделенные запятыми) — один из самых простых и распространенных способов хранения табличных данных. Чтобы представить файл CSV, он должен быть сохранен с расширением .csv .

Возьмем пример:

Если вы откроете указанный выше файл CSV с помощью текстового редактора, такого как возвышенный текст, вы увидите:

  Серийный номер, Имя, Город
1, Майкл, Нью-Джерси
2, Джек, Калифорния
  

Как видите, элементы файла CSV разделены запятыми. Здесь, , — это разделитель.

Вы можете использовать любой символ в качестве разделителя в соответствии с вашими потребностями.

Примечание: Модуль csv также можно использовать для файлов с другими расширениями (например: .txt ), если их содержимое имеет правильную структуру.

Работа с файлами CSV в Python

Хотя мы могли бы использовать встроенную функцию open() для работы с файлами CSV в Python, существует специальный модуль csv , который значительно упрощает работу с файлами CSV.

Прежде чем мы сможем использовать методы модуля csv , нам нужно сначала импортировать модуль, используя:

 import csv
 

Чтение CSV-файлов с помощью csv.

reader()

Чтобы прочитать CSV-файл в Python, мы можем использовать функцию csv.reader() . Предположим, у нас есть файл csv с именем people.csv в текущем каталоге со следующими записями.

Имя Возраст Профессия
Домкрат 23 Доктор
Миллер 22 Инженер

Давайте прочитаем этот файл, используя csv.reader() :

Пример 1: Чтение CSV с разделителем-запятой

 import csv
с open('people.csv', 'r') в виде файла:
    читатель = csv.reader (файл)
    для строки в читателе:
        печать (строка)
 

Выход

  ['Имя', 'Возраст', 'Профессия']
['Джек', '23', 'Доктор']
['Миллер', '22', 'Инженер']
  

Здесь мы открыли файл people.csv в режиме чтения, используя:

 с open('people. csv', 'r') в качестве файла:
    .. .. ...
 

Чтобы узнать больше об открытии файлов в Python, посетите: Python File Input/Output

Затем csv.reader() используется для чтения файла, который возвращает повторяемый объект reader .

9Затем объект 0007 reader повторяется с использованием цикла for для печати содержимого каждой строки.


В приведенном выше примере мы используем функцию csv.reader() в режиме по умолчанию для файлов CSV с разделителем-запятой.

Однако эта функция гораздо более настраиваема.

Предположим, что наш CSV-файл использует в качестве разделителя вкладку . Чтобы прочитать такие файлы, мы можем передать необязательные параметры функции csv.reader() . Возьмем пример.

Пример 2. Чтение CSV-файла с разделителем табуляции

 Импорт csv
с open('people.csv', 'r',) в виде файла:
    читатель = csv.reader (файл, разделитель = '\ t')
    для строки в читателе:
        печать (строка)
 

Обратите внимание на необязательный параметр delimiter = '\t' в приведенном выше примере.


Полный синтаксис функции csv.reader() :

Как видно из синтаксиса, мы также можем передать параметр диалекта в функция csv.reader() . Параметр диалект позволяет сделать функцию более гибкой. Чтобы узнать больше, посетите: Чтение файлов CSV в Python.


Запись CSV-файлов с помощью csv.writer()

Для записи в CSV-файл в Python мы можем использовать функцию csv.writer() .

Функция csv.writer() возвращает объект Writer , который преобразует данные пользователя в строку с разделителями. Позже эту строку можно будет использовать для записи в CSV-файлы с помощью функция writerow() . Возьмем пример.

Пример 3: запись в файл CSV

 импорт csv
с open('protagonist.csv', 'w', newline='') в виде файла:
    писатель = csv.writer (файл)
    Writer.writerow(["SN", "Фильм", "Главный герой"])
    author.writerow([1, "Властелин колец", "Фродо Бэггинс"])
    author. writerow([2, "Гарри Поттер", "Гарри Поттер"])
 

Когда мы запускаем указанную выше программу, создается файл protagonist.csv со следующим содержимым:

  SN, фильм, главный герой
1, Властелин колец, Фродо Бэггинс
2, Гарри Поттер, Гарри Поттер
  

В приведенной выше программе мы открыли файл в режиме записи.

Затем мы передали каждую строку как список. Эти списки преобразуются в строку с разделителями и записываются в файл CSV.


Пример 4: Запись нескольких строк с помощью writerows()

Если нам нужно записать содержимое двумерного списка в файл CSV, вот как мы можем это сделать.

 импорт CSV
csv_rowlist = [["SN", "Фильм", "Главный герой"], [1, "Властелин колец", "Фродо Бэггинс"],
               [2, «Гарри Поттер», «Гарри Поттер»]]
с open('protagonist.csv', 'w') в виде файла:
    писатель = csv.writer (файл)
    писатель.writerows (csv_rowlist)
 

Вывод программы такой же, как и в Пример 3 .

Здесь наш двумерный список передается методу write.writerows() для записи содержимого списка в файл CSV.


Пример 5: Запись в файл CSV с разделителем табуляции

 import csv
с open('protagonist.csv', 'w') в виде файла:
    писатель = csv.writer (файл, разделитель = '\ t')
    Writer.writerow(["SN", "Фильм", "Главный герой"])
    author.writerow([1, "Властелин колец", "Фродо Бэггинс"])
    author.writerow([2, "Гарри Поттер", "Гарри Поттер"])
 

Обратите внимание на необязательный параметр delimiter = '\t' в функции csv.writer() .


Полный синтаксис csv.writer () функция:

 csv.writer (csvfile, диалект = 'excel', ** необязательные_параметры)
 

Подобно csv.reader() , вы также можете передать диалектный параметр функции csv.writer() , чтобы сделать функцию более настраиваемой. Чтобы узнать больше, посетите: Написание CSV-файлов в Python


Python csv.

DictReader() Class

Объекты класса csv.DictReader() можно использовать для чтения CSV-файла в качестве словаря.

Пример 6: Python csv.DictReader()

Предположим, у нас есть тот же файл people.csv , что и в Пример 1 .

Имя Возраст Профессия
Домкрат 23 Доктор
Миллер 22 Инженер

Давайте посмотрим, как можно использовать csv.DictReader() .

 импорт CSV
с open("people.csv", 'r') в виде файла:
    csv_file = csv.DictReader(файл)
    для строки в csv_file:
        печать (дикт (строка))
 

Выход

  {'Имя': 'Джек', 'Возраст': '23', 'Профессия': 'Доктор'}
{'Имя': 'Миллер', 'Возраст': '22', 'Профессия': 'Инженер'}
  

Как мы видим, записи первой строки являются ключами словаря. И записи в других строках являются значениями словаря.

Здесь csv_file — это объект csv.DictReader() . Объект можно перебирать с помощью цикла for . csv.DictReader() вернул тип OrderedDict для каждой строки. Вот почему мы использовали dict() для преобразования каждой строки в словарь.

Обратите внимание, что мы явно использовали метод dict() для создания словарей внутри цикла for .

 печать (дикт (строка))
 

Примечание . Начиная с Python 3.8, csv.DictReader() возвращает словарь для каждой строки, и нам не нужно явно использовать dict() .


Полный синтаксис csv.DictReader() класс:

 csv.DictReader(файл, имена полей=Нет, restkey=Нет, restval=Нет, диалект='excel', *args, **kwds)
 

Чтобы узнать больше об этом, посетите: Python csv.DictReader() class


Python csv.DictWriter() Class

Объекты класса csv. DictWriter() можно использовать для записи в CSV файл из словаря Python.

Минимальный синтаксис класса csv.DictWriter() :

 csv.DictWriter(file, fieldnames)
 

Здесь,

  • файл — CSV файл куда мы хотим записать
  • имена полей — объект списка , который должен содержать заголовки столбцов, определяющие порядок, в котором данные должны быть записаны в файл CSV

Пример 7: Python csv.DictWriter()

 импорт csv
с open('players.csv', 'w', newline='') в виде файла:
    fieldnames = ['player_name', 'fide_rating']
    писатель = csv.DictWriter (файл, имена полей = имена полей)
    писатель.writeheader()
    Writer.writerow({'player_name': 'Магнус Карлсен', 'fide_rating': 2870})
    Writer.writerow({'player_name': 'Фабиано Каруана', 'fide_rating': 2822})
    Writer.writerow({'player_name': 'Дин Лижэнь', 'fide_rating': 2801})
 

Программа создает файл player. csv со следующими записями:

  player_name,fide_rating
Магнус Карлсен, 2870
Фабиано Каруана, 2822 г.
Дин Лижэнь, 2801
  

Полный синтаксис класса csv.DictWriter() :

 csv.DictWriter(f, имена полей, restval='', extrasaction='raise', диалект='excel', *args, * *kwds)
 

Чтобы узнать больше об этом, посетите: Python csv.DictWriter() class


Использование библиотеки Pandas для обработки файлов CSV

Pandas — это популярная библиотека данных на Python для обработки и анализа данных. Если мы работаем с огромными объемами данных, для простоты и эффективности лучше использовать pandas для обработки CSV-файлов.

Прежде чем мы сможем использовать pandas, нам нужно установить его. Чтобы узнать больше, посетите: Как установить Pandas?

После установки мы можем импортировать Pandas как:

 импортировать pandas как pd
 

Чтобы прочитать файл CSV с помощью pandas, мы можем использовать read_csv() 9Функция 0008.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *