Тема: Python. Основы. Работа с файлами
Работа с файлами в Python
- Чаще всего данные для обработки поступают из внешних источников – файлов.
- Существуют различные форматы файлов, наиболее простой и универсальный – текстовый . Он открывается в любом текстовом редакторе (например, Блокноте). Расширения у текстовых файлов: .txt, .html, .csv (их достаточно много).
- Помимо текстовых есть другие типы файлов (аудио, видео, .pdf, .doc, .ppt и пр.), которые открываются в специальных программах (аудио или видео проигрывателях, Pdf reader, Word и пр.).
+++Федоров Д. - Основы программирования на примере языка Python - 2018
Работа с файлами в Python
- Обыкновенные текстовые файлы
- Операции с файлами
- Текстовые файлы
- Обыкновенные текстовые файлы (произвольный формат хранения данных) Файлы в формате CSV (значения, разделенные запятыми) Файлы в формате JSON (данные представлены в виде пар "ключ : значение" в частично структурированном формате)
- Обыкновенные текстовые файлы (произвольный формат хранения данных)
- Файлы в формате CSV (значения, разделенные запятыми)
- Файлы в формате JSON (данные представлены в виде пар "ключ : значение" в частично структурированном формате)
- Файлы в .doc, .docx формате (Word)
- Табличные файлы Файлы в формате CSV Файлы Excel
- Файлы в формате CSV
- Файлы Excel
- PDF файлы
Работа с текстовыми файлами
Работа с файлами
+++Федоров Д. - Основы программирования на примере языка Python - 2018
Чтение данных из файла
file = open ( 'example_text.txt' , 'r' )
contents = file .read()
print (contents)
file .close()
+++Федоров Д. - Основы программирования на примере языка Python - 2018
Список режимов доступа к файлу в Python
r
Открывает файл только для чтения. Указатель стоит в начале файла.
rb
Открывает файл для чтения в двоичном формате. Указатель стоит в начале файла.
r+
Открывает файл для чтения и записи. Указатель стоит в начале файла.
rb+
Открывает файл для чтения и записи в двоичном формате. Указатель стоит в начале файла.
w
Открывает файл только для записи. Указатель стоит в начале файла. Создает файл с именем имя_файла, если такового не существует.
wb
Открывает файл для записи в двоичном формате. Указатель стоит в начале файла. Создает файл с именем имя_файла, если такового не существует.
w+
wb+
Открывает файл для чтения и записи. Указатель стоит в начале файла. Создает файл с именем имя_файла, если такового не существует.
Открывает файл для чтения и записи в двоичном формате. Указатель стоит в начале файла. Создает файл с именем имя_файла, если такового не существует.
a
Открывает файл для добавления информации в файл. Указатель стоит в конце файла. Создает файл с именем имя_файла, если такового не существует.
ab
Открывает файл для добавления в двоичном формате. Указатель стоит в конце файла. Создает файл с именем имя_файла, если такового не существует.
a+
Открывает файл для добавления и чтения. Указатель стоит в конце файла. Создает файл с именем имя_файла, если такового не существует.
ab+
Открывает файл для добавления и чтения в двоичном формате. Указатель стоит в конце файла. Создает файл с именем имя_файла, если такового не существует.
http://pythonicway.com/python-fileio
Атрибуты файлового объекта в Python
Как только файл был открыт и у вас появился файловый объект, вы можете получить следующую информацию о нем
file.closed
file.mode
Возвращает True если файл был закрыт.
file.name
Возвращает режим доступа, с которым был открыт файл.
Возвращает имя файла.
file.softspace
Возвращает False если при выводе содержимого файла следует отдельно добавлять пробел
http://pythonicway.com/python-fileio
Свойства существующего файла
my_file = open ( "some.txt" , "w" )
print ( "Имя файла: " , my_file.name)
print ( "Файл закрыт: " , my_file.closed)
print ( "В каком режиме файл открыт: " , my_file.mode)
print ( "Пробелы: " , my_file.softspace)
http://pythonicway.com/python-fileio
Создание текстового файла
my_file = open ( "myFile.txt" , "w+" )
my_file.write( "Привет, файл! " )
my_file.close()
В начале объявляется переменная my_file. После этого используются встроенные функции open и write для открытия и записи в файл. "w+" сообщает, что запись будет осуществляться в новый файл. Если он существует, то новое содержимое нужно записать поверх уже существующего. Если же вместо этого использовать параметр "w", тогда файл будет создан только в том случае, если он не существовал до этого.
Важно заметить, что в конце файл всегда нужно закрывать, чтобы изменения сохранились.
https://pythonru.com/osnovy/prostoj-sposob-sozdat-fajl-v-python
Добавление информации в файл
my_file = open ( "myFile.txt" , "a+" )
my_file.write( "Добавляем новый текст" )
my_file.close()
- Если нужно добавить новые данные в файл, тогда вместо "w+" нужно просто использовать параметр "a+".
- Однако в таком случае не будет добавлена новая строка, поэтому важно не забыть использовать символ \n .
https://pythonru.com/osnovy/prostoj-sposob-sozdat-fajl-v-python
Чтение данных из созданного нами файла
my_file = open ( "myFile.txt" , "a+" )
file_contents == my_file.read()
print (file_contents)
Привет, файл! Добавляем новый текст
https://pythonru.com/osnovy/prostoj-sposob-sozdat-fajl-v-python
Кратко
Создать файл
my_file = open ( "file.txt" , "w+")
Записать в файл
my_file.write( "Привет, файл!" )
Сохранить и закрыть файл
my_file.close()
https://pythonru.com/osnovy/prostoj-sposob-sozdat-fajl-v-python
Чтение файла
- Существует много способов чтение из файла построчно в Python.
- Можно считать строки в список или обращаться к каждой из строк в цикле при помощи итератора или вызова функции объекта file .
- Мы будем считывать файл построчно, используя функции readline(), readlines() и объект файла на примерах различных программ.
https://pythonru.com/osnovy/chtenie-iz-fajla-postrochno-v-python
Чтение файла построчно функцией readline()
- Открываем файл в режиме чтения. При этом возвращается дескриптор файла.
- Создаём бесконечный цикл while . В каждой итерации считываем строку файла при помощи readline() .
- Создаём бесконечный цикл while .
- В каждой итерации считываем строку файла при помощи readline() .
- Если строка не пустая, то выводим её и переходим к следующей. Вы можете проверить это, используя конструкцию if not . В противном случае файл больше не имеет строк и мы останавливаем цикл с помощью break .
- К моменту выхода из цикла мы считаем все строки файла в итерациях одну за другой.
- После этого мы закрываем файл, используя функцию close .
https://pythonru.com/osnovy/chtenie-iz-fajla-postrochno-v-python
Чтение файла построчно функцией readline()
# получим объект файла
file1 = open ( "sample.txt" , "r" )
while True :
# считываем строку
line = file1.readline()
# прерываем цикл, если строка пустая
if not line:
break
# выводим строку
print (line.strip())
# закрываем файл
file1.close
https://pythonru.com/osnovy/chtenie-iz-fajla-postrochno-v-python
Чтение строк как список функцией readlines()
- Функция readlines() возвращает все строки файла в виде списка.
- Пройдясь по списку и получить доступ к каждой строке.
- Вначале мы должны открыть текстовый файл и получить список всех его строк, используя функцию readlines() .
- После этого используя цикл for , чтобы обходим данный список.
https://pythonru.com/osnovy/chtenie-iz-fajla-postrochno-v-python
Чтение строк как список функцией readlines()
# получим объект файла
file1 = open ( "sample.txt" , "r" )
# считываем все строки
lines = file1.readlines()
# итерация по строкам
for line in lines:
print (line.strip())
# закрываем файл
file1.close
https://pythonru.com/osnovy/chtenie-iz-fajla-postrochno-v-python
Считываем файл построчно из объекта File
- В предыдущем примере, мы считываем каждую строку файла при помощи бесконечного цикла while и функции readline() .
- Но можно использовать цикл for для файлового объекта, чтобы в каждой итерации цикла получать строку, пока не будет достигнут конец файла.
# получим объект файла
with open ( "sample.txt" , "r" ) as file1:
# итерация по строкам
for line in file1:
print (line.strip())
Как прочитать файл построчно в Python
https://pythonru.com/osnovy/chtenie-iz-fajla-postrochno-v-python
Операции с файлами (удаление, перемещение)
Операции с файлами
- Обработка файлов в Python выполняется с помощью стандартного модуля os включает создание, переименование, перемещение, удаление файлов и папок, а также получение списка всех файлов и каталогов и многое другое.
- Достаточно лишь импортировать его и можно приступать к использованию — для этого используются path и методы isfile() , isdir() или exists() и многие другие.
- Подключение модуля
import os
Простой способ создать файл в python
https://pythonru.com/osnovy/prostoj-sposob-sozdat-fajl-v-python
Вывод текущей директории
Для получения текущего рабочего каталога используется os.getcwd() :
import os
# вывести текущую директорию
print ( "Текущая деректория:" , os.getcwd())
os.getcwd() возвращает строку в Юникоде, представляющую текущий рабочий каталог. Вот пример вывода: Текущая директория: C:\python3\bin
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Создание папки
- Для создания папки/каталога в любой операционной системе нужна следующая команда:
# создать пустой каталог (папку)
os.mkdir( "folder" )
- После ее выполнения в текущем рабочем каталоге тут же появится новая папка с названием «folder».
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Создание папки
- Если запустить ее еще раз, будет вызвана ошибка FileExistsError , потому что такая папка уже есть. Для решения проблемы нужно запускать команду только в том случае, если каталога с таким же именем нет. Этого можно добиться следующим образом:
# повторный запуск mkdir с тем же именем вызывает FileExistsError,
# вместо этого запустите:
if not os.path.isdir( "folder" ):
os.mkdir( "folder" )
- Функция os.path.isdir() вернет True, если переданное имя ссылается на существующий каталог.
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Изменение директории
- Менять директории довольно просто. Проделаем это с только что созданным:
# изменение текущего каталога на 'folder'
os.chdir( "folder" )
- Еще раз выведем рабочий каталог:
# вывод текущей папки
print ( "Текущая директория изменилась на folder:" , os.getcwd())
- Вывод:
- Текущая директория изменилась на folder: C:\python3\bin\folder
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Создание вложенных папок
- Предположим, вы хотите создать не только одну папку, но и несколько вложенных:
# вернуться в предыдущую директорию
os.chdir( ".." )
# сделать несколько вложенных папок
os.makedirs( "nested1/nested2/nested3" )
- Это создаст три папки рекурсивно, как показано на следующем изображении:
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Создание файлов
- Для создания файлов в Python модули не нужны. Можно использовать встроенную функцию open() .
- Она принимает название файла, который необходимо создать в качестве первого параметра и желаемый режим открытия — как второй:
# создать новый текстовый файл
text_file = open ( "text.txt" , "w" )
# запить текста в этот файл
text_file.write( "Это текстовый файл" )
- w значит write (запись), a — это appending (добавление данных к уже существующему файлу), а r — reading (чтение).
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Переименование файлов
- С помощью модуля os достаточно просто переименовать файл. Поменяем название созданного в прошлом шаге.
# переименовать text.txt на renamed-text.txt
os.rename( "text.txt" , "renamed-text.txt" )
- Функция os.rename() принимает 2 аргумента: имя файла или папки, которые нужно переименовать и новое имя.
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Перемещение файлов
- Функцию os.replace() можно использовать для перемещения файлов или каталогов:
# заменить (переместить) этот файл в другой каталог
os.replace( "renamed-text.txt" , "folder/renamed-text.txt" )
- Стоит обратить внимание, что это перезапишет путь, поэтому если в папке folder уже есть файл с таким же именем (renamed-text.txt), он будет перезаписан.
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Список файлов и директорий
# распечатать все файлы и папки в текущем каталоге
print ( "Все папки и файлы:" , os.listdir())
- Функция os.listdir() возвращает список, который содержит имена файлов в папке. Если в качестве аргумента не указывать ничего, вернется список файлов и папок текущего рабочего каталога:
- Все папки и файлы: ['folder', 'handling-files', 'nested1', 'text.txt']
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Список файлов и директорий
- А что если нужно узнать состав и этих папок тоже? Для этого нужно использовать функцию os.walk() :
# распечатать все файлы и папки рекурсивно
for dirpath, dirnames, filenames in os.walk( "." ):
# перебрать каталоги
for dirname in dirnames:
print ( "Каталог:" , os.path.join(dirpath, dirname))
# перебрать файлы
for filename in filenames:
print ( "Файл:" , os.path.join(dirpath, filename))
- os.walk() — это генератор дерева каталогов. Он будет перебирать все переданные составляющие. Здесь в качестве аргумента передано значение «.», которое обозначает верхушку дерева:
- Метод os.path.join() был использован для объединения текущего пути с именем файла/папки.
Работа с файлами в Python с помощью модуля OS
https://pythonru.com/osnovy/rabota-s-fajlami-v-python-s-pomoshhju-modulja-os
Модуль os
- Модуль os предоставляет множество функций для работы с операционной системой , причём их поведение, как правило, не зависит от ОС, поэтому программы остаются переносимыми.
- Наиболее часто используемые функции это:
- os.name - имя операционной системы. Доступные варианты: 'posix', 'nt', 'mac', 'os2', 'ce', 'java'.
- os.environ - словарь переменных окружения. Изменяемый (можно добавлять и удалять переменные окружения).
- os.uname() - информация об ОС. возвращает объект с атрибутами: sysname - имя операционной системы, nodename - имя машины в сети (определяется реализацией), release - релиз, version - версия, machine - идентификатор машины.
Модуль os
https://pythonworld.ru/moduli/modul-os.html
Модуль os
- os.access (path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True) - проверка доступа к объекту у текущего пользователя. Флаги: os.F_OK - объект существует, os.R_OK - доступен на чтение, os.W_OK - доступен на запись, os.X_OK - доступен на исполнение.
- os.chdir(path) - смена текущей директории.
- os.chmod (path, mode, *, dir_fd=None, follow_symlinks=True) - смена прав доступа к объекту (mode - восьмеричное число).
- os.chown (path, uid, gid, *, dir_fd=None, follow_symlinks=True) - меняет id владельца и группы (Unix).
- os.getcwd() - текущая рабочая директория.
Модуль os
https://pythonworld.ru/moduli/modul-os.html
Модуль os
- os.link (src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True) - создаёт жёсткую ссылку.
- os.listdir (path=".") - список файлов и директорий в папке.
- os.mkdir (path, mode=0o777, *, dir_fd=None) - создаёт директорию. OSError, если директория существует.
- os.makedirs (path, mode=0o777, exist_ok=False) - создаёт директорию, создавая при этом промежуточные директории.
- os.remove (path, *, dir_fd=None) - удаляет путь к файлу.
- os.rename (src, dst, *, src_dir_fd=None, dst_dir_fd=None) - переименовывает файл или директорию из src в dst.
- os.renames (old, new) - переименовывает old в new, создавая промежуточные директории.
Модуль os
https://pythonworld.ru/moduli/modul-os.html
Модуль os
- os.replace (src, dst, *, src_dir_fd=None, dst_dir_fd=None) - переименовывает из src в dst с принудительной заменой.
- os.rmdir (path, *, dir_fd=None) - удаляет пустую директорию.
- os.truncate (path, length) - обрезает файл до длины length.
- os.utime (path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True) - модификация времени последнего доступа и изменения файла. Либо times - кортеж (время доступа в секундах, время изменения в секундах), либо ns - кортеж (время доступа в наносекундах, время изменения в наносекундах).
- os.system (command) - исполняет системную команду, возвращает код её завершения (в случае успеха 0).
Модуль os
https://pythonworld.ru/moduli/modul-os.html
Модуль os
- os.walk (top, topdown=True, onerror=None, followlinks=False) - генерация имён файлов в дереве каталогов, сверху вниз (если topdown равен True), либо снизу вверх (если False). Для каждого каталога функция walk возвращает кортеж (путь к каталогу, список каталогов, список файлов).
- os.urandom(n) - n случайных байт. Возможно использование этой функции в криптографических целях.
- os.path - модуль, реализующий некоторые полезные функции на работы с путями.
- и многие другие функции
Модуль os
https://pythonworld.ru/moduli/modul-os.html
Работа с текстовыми файлами в формате CSV, JSON
Формат CSV, JSON
- CSV (от англ. Comma-Separated Values — значения, разделённые запятыми) — текстовый формат, предназначенный для представления табличных данных. Строка таблицы соответствует строке текста, которая содержит одно или несколько полей, разделенных запятыми.
- JSON (JavaScript Object Notation) — текстовый формат обмена данными, удобный для чтения и написания как человеком, так и компьютером. Он основан на подмножестве языка программирования JavaScript.
- CSV и JSON — вероятно, наиболее распространенные форматы, используемые для приема, хранения неструктурированных или частично структурированных данных и обмена ими.
https://ru.wikipedia.org/wiki/CSV - CSV
CSV (от англ. Comma-Separated Values — значения, разделённые запятыми)
CSV
- CSV — текстовой формат, ориентированный на работу с данными несложных электронных таблиц, хранящихся в обычных тестовых файлах.
- Модуль csv упрощает синтаксический анализ (парсинг) CSV-файлов.
- Подключение
import csv
https://tokmakov.msk.ru/blog/item/83
Чтение CSV-файлов
- Файл example.csv , из которого будем читать:
05.04.2015 13:34;Яблоки;73
05.04.2015 3:41;Вишни;85
06.04.2015 12:46;Груши;14
https://tokmakov.msk.ru/blog/item/83
Чтение данных из файла CSV
- Чтобы прочитать данные из CSV-файла, необходимо создать объект Reader , который обеспечивает возможность итерирования по строкам файла:
import csv
exampleFile = open ( 'example.csv' , encoding = 'UTF-8' )
exampleReader = csv.reader(exampleFile, delimiter = ';' )
exampleData = list(exampleReader)
print (exampleData)
exampleFile.close()
https://tokmakov.msk.ru/blog/item/83
[['05.04.2015 13:34', 'Яблоки', '73'],
['05.04.2015 3:41', 'Вишни', '85'],
['06.04.2015 12:46', 'Груши', '14']]
CSV
- Теперь, когда у нас есть список списков, можно обращаться к отдельным ячейкам с помощью exampleData[row][col] .
- В случае больших CSV-файлов целесообразно использовать объект Reader в цикле for .
- Тем самым удается избежать загрузки всего файла в оперативную память.
https://tokmakov.msk.ru/blog/item/83
CSV
import csv
exampleFile = open ( 'example.csv' , encoding = 'UTF-8' )
exampleReader = csv.reader(exampleFile, delimiter = ';' )
for row in exampleReader:
string = 'Строка #' + str(exampleReader.line_num) + ' '
for value in row:
string = string + value + ' '
print (string)
exampleFile.close()
https://tokmakov.msk.ru/blog/item/83
Строка #1 05.04.2015 13:34 Яблоки 73
Строка #2 05.04.2015 3:41 Вишни 85
Строка #3 06.04.2015 12:46 Груши 14
Для вывода номера строки используется свойство line_num объекта Reader. Цикл по объекту Reader можно выполнить только один раз. Для повтороно чтения данных необходимо заново создать объект Reader, вызвав метод csv.reader().
Запись CSV-файлов
import csv
exampleFile = open ( 'output.csv' , 'w' , encoding = 'UTF-8’ , newline = '' )
exampleWriter = csv.writer(exampleFile, delimiter = ';' )
exampleData = [[ '05.04.2015 13:34' , 'Яблоки' , '73’ ], [ '05.04.2015 3:41' , 'Вишни' , '85' ], [ '06.04.2015 12:46’ , 'Груши' , '14' ]]
for row in exampleData:
exampleWriter.writerow(row)
exampleFile.close()
Файл output.csv:
05.04.2015 13:34;Яблоки;73
05.04.2015 3:41;Вишни;85
06.04.2015 12:46;Груши;14
https://tokmakov.msk.ru/blog/item/83
При работе в Windows функции open() надо передать именованный аргумент newline = '', иначе в файле output.csv появятся лишние пустые строки. С помощью именованного аргумента lineterminator метода csv.writer() можно заменить разделитель строк.
JSON (JavaScript Object Notation)
JSON
- JSON (JavaScript Object Notation) — текстовый формат обмена данными, удобный для чтения и написания как человеком, так и компьютером. Он основан на подмножестве языка программирования JavaScript.
- JSON основан на двух структурах данных:
- Коллекция пар ключ-значение (объект) Упорядоченный список значений (массив)
- Коллекция пар ключ-значение (объект)
- Упорядоченный список значений (массив)
- Подключение
import json
https://tokmakov.msk.ru/blog/item/85
JSON в сравнении с CSV-файлами
- Файлы в формате JSON имеют несколько преимуществ по сравнению с CSV-файлами.
- JSON поддерживает иерархические структуры, упрощая хранение связанных данных в одном документе и представление сложных связей. Большинство языков предоставляют упрощенные библиотеки сериализации JSON или встроенную поддержку десериализации JSON в объекты. JSON поддерживает списки объектов, помогая избежать беспорядочных преобразований списков в реляционную модель данных. JSON — это широко используемый формат файлов для баз данных NoSQL, таких как MongoDB, Couchbase и Azure Cosmos DB.
- JSON поддерживает иерархические структуры, упрощая хранение связанных данных в одном документе и представление сложных связей.
- Большинство языков предоставляют упрощенные библиотеки сериализации JSON или встроенную поддержку десериализации JSON в объекты.
- JSON поддерживает списки объектов, помогая избежать беспорядочных преобразований списков в реляционную модель данных.
- JSON — это широко используемый формат файлов для баз данных NoSQL, таких как MongoDB, Couchbase и Azure Cosmos DB.
https://docs.microsoft.com/ru-ru/azure/architecture/data-guide/scenarios/csv-and-json
JSON
- В нотации JSON это выглядит так:
- Объект — неупорядоченный набор пар ключ-значение. Объект начинается с { и заканчивается } . Ключ и значение разделяются двоеточием, сами пары ключ-значение разделяются запятой.
{ "email" : "[email protected]" ,
"name" : "Иванов Иван Иванович" }
https://tokmakov.msk.ru/blog/item/85
JSON
- Массив — упорядоченная коллекция значений.
- Массив начинается с [ и заканчивается ] . Значения разделены запятой.
[ "[email protected]" , "[email protected]" ,
- Значение может быть строкой в двойных кавычках, числом, true, false, null, объектом или массивом. Эти структуры могут быть вложенными.
https://tokmakov.msk.ru/blog/item/85
JSON
- Строка — коллекция нуля или больше символов Unicode, заключенная в двойные кавычки, используя \ (обратную косую черту) в качестве символа экранирования. Для представления числа используется только десятичная система счисления.
{
"id" : 765 ,
"email" : "[email protected]" ,
"name" : "Иванов Иван Иванович" ,
"age" : 45 ,
"admin" : false,
"friends" : [ 123 , 456 , 789 ]
}
https://tokmakov.msk.ru/blog/item/85
JSON – Чтение и запись данных
- Модуль json позволяет легко записывать и читать данные в формате JSON.
- Для чтения данных в JSON-формате есть два метода:
- json.load() — метод считывает файл в формате JSON и возвращает объект Python
- json.loads() — метод считывает строку в формате JSON и возвращает объект Python
- Для записи информации в формате JSON также два метода:
- json.dump() — метод записывает объект Python в файл в формате JSON
- json.dumps() — метод преобразует объект Python в строку в формате JSON
https://tokmakov.msk.ru/blog/item/85
JSON - Таблица конвертации данных
Таблица конвертации данных Python в JSON
Python
JSON
dict
Таблица конвертации JSON в данные Python
list, tuple
JSON
object
array
Python
str
object
dict
array
string
int, float
list
number(int, real)
True, False
string
None
str
number(int, real)
true, false
int, float
null
true, false
True, False
null
None
https://tokmakov.msk.ru/blog/item/85
Преобразуем json-строку в словарь
import json
string = '{"id":765, "email":"[email protected]", "surname":"Иванов", "age":45, "admin":false, "friends":[123,456,789]}'
data = json.loads(string)
print (data[ "email" ])
print (data[ "surname" ])
print (data[ "admin" ])
print (data[ "friends" ])
Иванов
False
[123, 456, 789]
https://tokmakov.msk.ru/blog/item/85
Читаем json-данные из файла и преобразуем в словарь
import json
# читаем json-данные из файла и преобразуем в словарь
with open ( 'data.json' , encoding = 'UTF-8' ) as file :
data = json.load( file )
print (data[ "email" ])
print (data[ "surname" ])
print (data[ "admin" ])
print (data[ "friends" ])
https://tokmakov.msk.ru/blog/item/85
Иванов
False
[123, 456, 789]
Преобразуем словарь в json-строку
import json
data = { "id" : 765 , "email" : "[email protected]" , "surname" : "Иванов" , "age" : 45 , "admin" : False , "friends" :[ 123 , 456 , 789 ]}
# преобразуем словарь в json-строку
string = json.dumps(data)
print (string)
# преобразуем словарь в json-строку
string = json.dumps(data, ensure_ascii = False )
print (string)
https://tokmakov.msk.ru/blog/item/85
{"id": 765, "email": "[email protected]", "surname": "\u0418\u0432\u0430\u043d\u043e\u0432", "age": 45, "admin": false, "friends": [123, 456, 789]}
{"id": 765, "email": "[email protected]", "surname": "Иванов", "age": 45, "admin": false, "friends": [123, 456, 789]}
Преобразуем словарь в json и записываем в файл
import json
data = { "id" : 765 , "email" : "[email protected]" , "surname" : "Иванов" , "age" : 45 , "admin" : False , "friends" :[ 123 , 456 , 789 ]}
# преобразуем словарь в json и записываем в файл
with open ( 'data.json' , 'w' , encoding = 'UTF-8' ) as file :
json.dump(data, file )
# преобразуем словарь в json и записываем в файл
with open ( 'data.json' , 'w' , encoding = 'UTF-8' ) as file :
json.dump(data, file , ensure_ascii = False )
https://tokmakov.msk.ru/blog/item/85
Преобразуем словарь в json и записываем в файл
Работа с JSON в Python https://tokmakov.msk.ru/blog/item/85
Работа с файлами Word Библиотека Python-Docx
Библиотека Python-Docx
- Официальный сайт библиотеки Python-Docx
- https://python-docx.readthedocs.io/en/latest/
Официальный сайт библиотеки Python-Docx
https://python-docx.readthedocs.io/en/latest/
Работа с файлами Word
- Работа с файлами MS Word в Python (С помощью модуля python-docx) https://tokmakov.msk.ru/blog/item/78
- Документация по модулю python-docx https://python-docx.readthedocs.io/en/latest/
- Бесшовная интеграция Microsoft Excel и Word с помощью Python https://habr.com/ru/company/skillfactory/blog/553224/
- Чтение и запись файлов MS Word с помощью модуля Python-Docx https://internet--technologies-ru.turbopages.org/internet-technologies.ru/s/articles/chtenie-i-zapis-faylov-word-s-pom-python-docx.html
Работа с файлами Excel
Работа с файлами Excel
- http://www.python-excel.org/
- Openpyxl - The recommended package for reading and writing Excel 2010 files (ie: .xlsx)
- Download | Documentation | Bitbucket
- Xlsxwriter - An alternative package for writing data, formatting information and, in particular, charts in the Excel 2010 format (ie: .xlsx)
- Download | Documentation | GitHub
- Pyxlsb - This package allows you to read Excel files in the xlsb format.
- Download | GitHub
- Pylightxl - This package allows you to read xlsx and xlsm files and write xlsx files.
- Download | Documentation | GitHub
- Xlrd - This package is for reading data and formatting information from older Excel files (ie: .xls)
- Download | Documentation | GitHub
- Xlwt - This package is for writing data and formatting information to older Excel files (ie: .xls)
- Download | Documentation | Examples | GitHub
- Xlutils - This package collects utilities that require both xlrd and xlwt , including the ability to copy and modify or filter existing excel files. NB: In general, these use cases are now covered by openpyxl!
- Download | Documentation | GitHub
Библиотека openpyxl
- Официальный сайт библиотеки openpyxl
- https://openpyxl.readthedocs.io/en/stable/
Библиотека pandas
- Pandas — программная библиотека на языке Python для обработки и анализа данных https://pandas.pydata.org/
Библиотека XlsxWriter
- Библиотека XlsxWriter https://xlsxwriter.readthedocs.io/
Работа с файлами Excel. Документация
- Использование Python и Excel для обработки и анализа данных. Часть 1: импорт данных и настройка среды https://habr.com/ru/company/otus/blog/331746/
- Использование Python и Excel для обработки и анализа данных. Часть 2: библиотеки для работы с данными https://habr.com/ru/company/otus/blog/331998/
- Python | создание и запись в файл Excel с помощью модуля XLSXWRITER http://espressocode.top/python-create-and-write-on-excel-file-using-xlsxwriter-module/
- Чтение и запись файлов Excel (XLSX) на Python с помощью библиотеки Pandas https://pythobyte.com/reading-and-writing-excel-files-in-python-with-the-pandas-library-8358adce/
Работа с файлами PDF Библиотека
Для работы с PDF форматов существует большое количество библиотек
PyPDF2
- PyPDF2 — библиотека для извлечения информации и содержимого документов, постраничного разделения документов, объединения документов, обрезки страниц и добавления водяных знаков. PyPDF2 поддерживает как незашифрованные, так и зашифрованные документы.
- https://pypi.org/project/PyPDF2/
- https://pythonhosted.org/PyPDF2/
- https://pythonist-ru.turbopages.org/pythonist.ru/s/sozdanie-i-izmenenie-pdf-fajlov-v-python/
PDFMiner
- PDFMiner — это инструмент для извлечения информации из PDF-документов. В отличие от других инструментов, связанных с PDF, он полностью фокусируется на получении и анализе текстовых данных. PDFMiner позволяет получить точное расположение текста на странице, а также другую информацию, такую как шрифты или строки. Он включает в себя конвертер PDF, который может преобразовывать PDF-файлы в другие текстовые форматы (например, HTML). Он имеет расширяемый анализатор PDF, который может использоваться для других целей, кроме анализа текста.
- Можно также использовать клонированный пакет PDFMiner.six .
- Оба пакета позволяют анализировать и преобразовывать PDF‑документы. Это включает в себя поддержку PDF 1.7, а также языков CJK (китайский, японский и корейский) и различные типы шрифтов (Type1, TrueType , Type3 и CID).
- https://euske.github.io/pdfminer/index.html
- https://github.com/pdfminer/pdfminer.six
- https://pypi.org/project/pdfminer/
- https://pdfminer-docs.readthedocs.io/pdfminer_index.html
- https://python-scripts.com/exporting-data-from-pdf
PDFQuery
- PDFQuery — позиционируется как « быстрая и удобная библиотека чистого PDF » и реализована как оболочка для PDFMiner, lxml и pyquery . Основная идея заключается в том, чтобы « надежно извлекать данные из наборов PDF‑файлов, используя как можно меньше кода ».
- https://github.com/jcushman/pdfquery
tabula-py
- tabula- py — простая оболочка Python для tabula-java , которая может читать таблицы из PDF‑файлов и преобразовывать их во фреймы (DataFrames) Pandas . Позволяет конвертировать файл PDF в файлы форматов CSV / TSV / JSON .
- https://github.com/chezou/tabula-py
- https://tabula-py.readthedocs.io/en/latest/
- https://readthedocs.org/projects/tabula-py/downloads/pdf/latest/
pdflib
- pdflib — расширение библиотеки Poppler , которое позволяет анализировать и конвертировать PDF‑документы. Не следует его путать с коммерческим клоном PDFLib с таким же именем.
- https://github.com/alephdata/pdflib
- https://www.pdflib.com/documentation/
- https://www.pdflib.com
PyFPDF
- PyFPDF — библиотека для создания документов PDF под Python. Портировано из библиотеки FPDF ( PHP ), известной замены PDFlib-расширения со множеством примеров, сценариев и производных.
- https://pyfpdf.readthedocs.io/en/latest/
- https://pyfpdf.readthedocs.io/en/latest/Tutorial/index.html
PDFTables
- PDFTables — коммерческий сервис, предлагающий извлечение данных из таблиц документов PDF. Предлагает API, позволяющий использовать PDFTables в качестве SAAS .
- https://pdftables.com
PyX
- PyX — графический пакет Python для создания файлов PostScript, PDF и SVG . Он сочетает в себе абстракцию модели чертежа PostScript с интерфейсом TeX / LaTeX . Сложные задачи, такие как создание 2D и 3D графиков в готовом для публикации качестве, построены из этих примитивов.
- https://pyx-project.org
- https://pyx-project.org/manual/index.html
- https://sourceforge.net/p/pyx/gallery/index/
ReportLab
- ReportLab — амбициозная промышленная библиотека, в основном ориентированная на оздание высококачественных PDF‑документов. Доступны как свободная версия с открытым исходным кодом, так и коммерческая, улучшенная, версия ReportLab PLUS.
- https://www.reportlab.com
- https://www.reportlab.com/dev/docs/
- https://www.reportlab.com/dev/samples/
- https://pypi.org/project/reportlab/
PyMuPDF
- PyMuPDF (он же «fitz») — привязка Python для MuPDF, который является облегченным средством просмотра PDF и XPS. Библиотека может получать доступ к файлам в форматах PDF, XPS , OpenXPS, epub в комиксах и художественных книгах, а также известна своей высокой производительностью и высоким качеством рендеринга.
- https://github.com/pymupdf/PyMuPDF
- https://pypi.org/project/PyMuPDF/
- https://pymupdf.readthedocs.io/en/latest/index.html
- https://documentation.help/PyMuPDF/tutorial.html
pdfrw
- pdfrw — чистый анализатор PDF на основе Python для чтения и записи PDF. Он точно воспроизводит векторные форматы без растеризации. Вместе с ReportLab он помогает повторно использовать части существующих PDF‑файлов в новых PDF‑файлах, созданных с помощью ReportLab.
- https://pypi.org/project/pdfrw/
- https://github.com/pmaupin/pdfrw


Python. Основы. Работа с файлами 