Press "Enter" to skip to content

Python: вывод данных в консоль

Метод работает аналогично centre() , но выравнивает текст по правому краю. То есть символы дополняются только с левой стороны.

Форматирование USB-флешки и -диска В Linux (на примере Ubuntu). Работа с терминалом, Fdisk, Disks, Gparted.

С одной стороны, операция форматирования* сравнительно просто выполняется (причем, и в Linux, и в Windows) – достаточно сделать правый клик мышки по флешке/диску в менеджере файлов/проводнике и выбрать в меню эту функцию. (однако, в некоторых случаях всё может пойти не по плану, и понадобится терминал. ).

Собственно, для такого случая решил привести неск. небольших примеров, как можно быстро отформатировать флешку/диск // 3 разными способами (хоть один – да сработает! ��).

* Примечание : зачем нужна операция форматирования? Чаще всего для быстрого удаления всех данных на диске и изменения файловой системы . Также иногда используется при вирусном заражении устройства, для устранения некоторых видов ошибок и пр.

Форматирование накопителя в Linux

Способ 1 (универсальный, через терминал)

Смотрим кол-во разделов на флешке/диске

Итак.

Я решил рассмотреть неск. случаев (с 1-ним разделом // с 2-3+ разделами), чтобы заметка была актуальна и для обычных флешек, и для внешних дисков (даже, если вам нужно не только отформатировать один из разделов на них, но и удалить их). Плюс попутно пояснить смысл происходящего на скринах.

Вообще, начать лучше с просмотра всех подключенных флешек и дисков в системе – для этого нужно вызвать терминал Ctrl+Alt+T (или Win+T ) и использовать одну из команд:

Из моего примера ниже видно следующее ��:

  • появился большой список из накопителей. Меня интересует USB-флешка/диск на 57,3 ГБ (обозначается она как: /dev/sda ). Обозначение будет нужно для дальнейших операций, запомните его!
  • на ней есть два раздела (Device) – обозначаются они /dev/sda1 и /dev/sda2 соответственно (это всё видно на скрине ниже). Разумеется, у вас может быть всего один раздел (на флешках, например), или 3 и более (так иногда бывает на внешних дисках).

Скриншот. На флешке 2 раздела. Можно просто отформатировать один из них, а можно сначала их все удалить, и создать один раздел на весь объем диска

�� Важно!

Обратите внимание, что:

  • сам накопитель обозначается как: /dev/sda
  • раздел на этом накопителе обозначается как: /dev/sda1
  • разделов на накопителе может быть несколько!

В зависимости от выполняемой операции – вводить нужно всегда свою аббревиатуру, т.е. когда-то /dev/sda , а когда-то /dev/sda1 !

А далее мы задачу разобьём на два случая.

Если нужно просто отформатировать один из разделов

Чуть выше при помощи команды sudo fdisk -l мы получили информацию обо всех флешках и дисках в системе. Допустим, что интересуемый нас раздел на флешке – обозначается как ” /dev/sda1 ” (см. скрин ниже). ��

Тогда для его форматирования нужно воспользоваться командами:

  • sudo umount /dev/sda1 — эта команда размонтирует этот раздел (чтобы не вылезло ошибки, что раздел занят. );
  • sudo mkfs.vfat /dev/sda1 — эта команда отформатирует раздел в FAT32, которая читается и в Linux, и в Windows ( прим. : для форматирования в NTFS — sudo mkfs.ntfs /dev/sda1 ; для форматирования в EXT4 — sudo mkfs.ext4 /dev/sda1 ).
  • собственно, это всё. ��

Скриншот. Форматирование раздела на флешке в терминале Linux Ubuntu

Если нужно удалить все разделы, затем создать их заново и отформатировать (чтобы диск читался и в Linux, и в Windows)

В этом случае (после команды sudo fdisk -l в терминале) нужно выбрать диск/флешку для работы – для этого используется ее обозначение:

  • �� в моем случае вводится команда: sudo fdisk /dev/sda и нажимается Enter;
  • �� далее появится строка “Command” – ей нужно ввести определенную букву для выполнения операции;
  • �� для удаления раздела на выбранном диске – просто введите букву ” d ” (без кавычек), укажите номер раздела, и нажмите Enter. Если нужно удалить все разделы – просто нажмите неск. раз ” d ” и Enter. См. мой пример ниже. ��

Скриншот. Удаляем все разделы

Когда все старые разделы были удалены (т.е. будет сообщение “No partition is defined yet”) – можно приступить к созданию нового раздела:

  • �� для этого в строку “Command” : введите букву ” n ” и нажмите Enter;
  • �� строки с номером раздела и первым/последним секторами можно оставить пустыми и нажать сразу Enter (если вам нужен только один раздел на диске);
  • �� по умолчанию раздел будет создан с типом “Linux Filesystem” и в Windows он может не читаться. Чтобы исправить это, в строке “Command” введите ” t ” и нажмите Enter, далее введите число ” 11 ” (это номер типа “Microsoft basic data”, такие флешки читаются и в Windows, и в Linux. Чтобы посмотреть весь список доступных типов – используйте букву ” L “).
  • �� чтобы сохранить все изменения – введите букву ” w ” в строку “Command” и нажмите Enter. Всё, все изменения будут произведены!

Скриншот. Создаем новый раздел, меняем тип на Microsoft (чтобы открывался диск в Windows) и сохраняем изменения

Ну и осталось сделать последний штрих: отформатировать наш созданный раздел. Для этого сначала хорошо бы снова посм. все диски в системе (команда: sudo fdisk -l ), а затем воспользоваться одной из следующих команд:

  • для форматирования в FAT32 — sudo mkfs.vfat /dev/sda1 (вместо /dev/sda1 — введите свое обозначение раздела!);
  • для форматирования в NTFS — sudo mkfs.ntfs /dev/sda1
  • для форматирования в EXT4 — sudo mkfs.ext4 /dev/sda1
  • ���� если возникнет ошибка — попробуйте перед форматированием размонтировать раздел; команда: sudo umount /dev/sda1

Скриншот. Форматируем раздел обычным образом

Способ 2 (Disks / самый простой способ)

Терминал — это, конечно, надежный способ работы с ОС, однако, через спец. утилиты с граф. интерфейсом делать это намного проще. Что касается нашей задачи — то в Ubuntu есть встроенное приложение Disks.

Самый простой вариант форматирования флешки — подключить ее к USB-порту, открыть менеджер файлов (слева в меню), кликнуть правой кнопкой мыши по ней и выбрать опцию “Format. “ . ��

Скриншот. Format. (открываем просмотр файлов)

Кстати, также утилиту Disks можно найти среди списка предустановленного софта (по крайней мере в Ubuntu 22.04 она есть). ��

Скриншот. Утилита Disks

В утилите Disks нужно слева выбрать флешку, затем раздел, и нажать по значку “колесика” – далее кликнуть по “Format Partition” .

Скриншот. Format partition – выбрали раздел, и нажимаем по значку “колесико”

Затем выбрать файловую систему (предпочтительно NTFS, чтобы флешка читалась в Windows), дать имя флешки и приступить к операции. См. мой пример ниже. ��

Скриншот. NTFS – для Windows (Disks)

Скриншот. Format – утилита Disks

Как правило, операция быстрого форматирования проходит достаточно шустро: в моем случае FAT на NTFS сменилась за 10 сек.

Скриншот. Решено, флешка отформатирована (Disks)

Способ 3 (Gparted)

Также работать с дисками и флешками можно с помощью спец. инструмента — Gparted. В некоторых версиях Linux это приложение предустановлено (например, в Linux Mint), в Ubuntu же его нужно инсталлировать самостоятельно. Покажу на примере:

  1. запускаем терминал: Ctrl+Alt+T (или Win+T );
  2. вводим команду: sudo apt install gparted и нажимаем Enter (проверьте, чтобы был доступ к Интернет);
  3. далее нужно подтвердить установку Gparted, введя ” Y ” и нажав Enter;
  4. когда установка будет завершена – просто запустите Gparted прямо из терминала, команда: sudo gparted

Скриншот. Устанавливаем Gparted

Скриншот. Запускаем Gparted

Далее появится классическое приложение с типовым граф. интерфейсом: в углу выбираем нужный диск/флешку для форматирования. См. скрин ниже. ��

Скриншот. Выбираем флешку из списка накопителей (Gparted)

Далее кликаем ПКМ по нужному разделу (см. пример ��), и размонтируем его (выбрать в меню “Umount”).

Скриншот. Размонтируем раздел (Gparted)

Затем кликаем еще раз ПКМ по этому же разделу (который был размонтирован) и в меню выбираем операцию Format to -> и указываем файловую систему: рекомендую для совместимости флешки выбрать NTFS (но доступны и другие: EXT 2, 3 4; FAT 16, 32; NTFS и пр.).

Скриншот. Форматируем в NTFS для совместимости с Windows

Чтобы наши настройки были выполнены – останется нажать последнюю кнопку “Apply All Operations” (или по рус.: принять/выполнить все операции). ��

Скриншот. Выполняем все операции (Gparted)

Останется только дождаться выполнения форматирования. Как правило, процесс идет быстро. ��

Скриншот. Дожидаемся завершения операции. Готово! (Gparted)

Дополнения по теме – лишними не будут, пишите в комментариях (заранее благодарю).

Python: вывод данных в консоль

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

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

Функция print и её параметры

Функция print() включена в стандартную библиотеку языка Python, как основной инструмент для вывода данных в консоль или любое другое устройство (экран, принтер и так далее).

Программист может настраивать вывод данных, используя аргументы функции:

*objects

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

Передавая объекты в функцию, программист может их передавать через запятую или использовать конкатенацию. Передача нескольких аргументов не приведёт к конфликту между *objects и другими необязательными аргументами, потому что интерпретатор автоматически распознаёт остальные параметры по ключевому слову (sep, end, file, flush)!

Вот пример:

print("apple", "orange" + " banana", "cherry") apple orange banana cherry

sep

Этот аргумент определяет, что будет стоять между переданными объектами. По умолчанию параметр sep имеет значение » «, то есть при выводе нескольких объектов, между ними будет установлен пробел, поменяем его на другой символ, например «-«:

print("Один", "Два", "Три", sep="-") Один-Два-Три

end

Аргумент определяет символ, которым заканчивается выполнение функции print(). По умолчанию это символ переноса строки «\n», то есть после вывода всех данных каретка переходит на следующую строку, и следующий вывод функции print начинается с новой строки. Если нужно, чтобы вывод нескольких print был в одну строку — следует заменить последний символ.

Вот пример:

print("Один") print("Два", end=" ") print("Три") Один Два Три

file

Этот аргумент позволяет переопределить поток вывода. По умолчанию установлено значение «sys.stdout», то есть данные выводятся в консоль. Если вместо этого указать какой-нибудь файл, то в данные запишутся в него.

Вот пример скрипта на Python, который откроет файл temp.txt и запишет в него текст с помощью функции print:

with open("temp.txt", "w") as f: print("Write to file", file=f)

flush

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

Аналогично и с выводом в консоль, данные записываются в буфер и выводятся из него в консоль. Если flush выставлен в True, то вывод производится немедленно.

print("Some text", flush=True)

Форматированный вывод

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

Оператор %

Оператор % часто используется для форматирования и хорошо известен не только программистам на Python, но и программистам на C/С++. По сути, оператор % — это метка, вместо которой подставляется значение переменной или выражение. Оператор % размещается непосредственно в выводимой строке, а подставляемые значения — в кортеже после второго %. Пример:

print("Программа номер %2d, получила результат: %5.2f" % (4, 7.3333)) Программа номер 4, получила результат: 7.33

Помимо символа % указывается тип значения, а также, по желанию, длина и точность. Синтаксис выглядит так:

%(флаги)(ширина)(.точность)тип

Если рассмотреть пример, можно увидеть, что:

  • « %2d » используется для первого элемента кортежа, целого числа «4». Так как после % указана длина «2», а число в кортеже состоит только из одной цифры, в выводе добавится дополнительный пробел.
  • « %5.2f » — это формат для чисел с плавающей точкой. «5» — это общее количество цифр, которые должна содержать строка, а «.2» — это количество цифр после запятой.

Метод format

Этот инструмент был добавлен в Python версии 2.6. В сравнении с предыдущем способом format оказывается чуть более громоздким. Программист использует символ «<>», чтобы отметить место, в которое будет подставлена переменная или выражение. Внутри фигурных скобок можно указать имя, тип значения, ширину и точность.

Подставляемые значения указываются в кортеже после ключевого слова format. Их можно указывать как позиционно, так и присваивать по имени. Пример:

print('  января празднует день рождения' .format('Никита', '25', other ='15-ый')) Никита 25 января празднует 15-ый день рождения

Метод format также позволяет форматировать числа, то есть указывать их ширину и точность:

print("Робот № весит " .format(r = 1134, w = 112.5534)) Робот №1134 весит 112.55

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

data = dict(name ="Бендер", race ="Робот") print("Это , он - ".format(**data)) Это Бендер, он - Робот

Строковый метод

Вывод с помощью строкового метода формируется с использованием операций среза и методов строк. Для работы со строковым типом данных создано несколько методов, которые позволяют просто и изящно форматировать вывод, среди них методы: ljust() , rjust() , center() .

centre()

Эта функция выравнивает строку по центру в соответствии с указанной шириной, заполняя недостающую ширину пробелами. Она имеет следующий синтаксис:

str.center(len, fillchr)

Здесь:

  • str — это строка, которую будем центрировать.
  • len – это ширина строки.
  • fillchr — символ, которым заполняется недостающее пространство (по умолчанию — пробел).

Пример:

text = "Этот текст расположен в центре" print(text.center(50)) Этот текст расположен в центре

Важно понимать, что функция располагает текст не в центре консоли, а в центре поля указанной ширины (в примере это 50 символов).

Если поменять символ заполнения, получится следующее:

text = "Этот текст расположен в центре" print(text.center(50, "_")) __________Этот текст расположен в центре__________

ljust()

Метод работает аналогично centre() , только выравнивает текст не по центру, а по левому краю. То есть недостающие символы дополняются не с двух сторон, а только с правой.

rjust()

Метод работает аналогично centre() , но выравнивает текст по правому краю. То есть символы дополняются только с левой стороны.

f-строки

Иногда нужно просто вставить значение переменной в какую-то часть строки. Можно воспользоваться одним из методов форматирования, строить длинные конструкции из комбинаций строк и имён переменных, соединённых запятыми (или «+»), например:

print("Мне", age, ", теперь я могу пойти в", place, "когда захочу")

Однако в Python версии 3.6 в язык был добавлен простой и удобный инструмент, который называется f-строка или интерполированная строка. С его помощью можно удобно вставлять переменные в любое место выводимой строки. Для этого используются фигурные скобки «<>», внутри которых указывается имя переменной, а перед строкой ставится символ «f». Пример:

name = "Боб" age = 25 print(f" сегодня празднует -ый день рождения") Боб сегодня празднует 25-ый день рождения

Поля заданной ширины

В приведённых выше примерах уже использовались инструменты для настройки ширины полей. Ширина поля вывода настраивается с помощью вставки численного значения между знаком «%» и типом вывода (например, «d»). То есть установка ширины поля выглядит так:

print("%6d %6d" % (6, 6)) 6 6

Установка ширины полей работает так:

  • Интерпретатор получает информацию о численном значении ширины вывода (в примере это «6»).
  • Затем он получает информацию о подставляемом значение, то есть считает, из скольки символов оно состоит (в примере это «1»).
  • Если количество символов в подставляемом значение меньше, чем ширина строки, при выводе в строку добавляются дополнительные пробелы, иначе значение просто выводится.

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

Примеры

С помощью форматированного вывода можно полностью настроить любой вывод в консоль, например:

Вывод ошибки

Ниже пример обработки ошибки. Мы перехватываем исключение в блоке except и выводим сообщение о ней с помощью функции print.

try: for i in range(4): if (i == 3): i = text print(f"Попытка прошла успешно") except Exception as err: print("Возникла ошибка: \"<>\"".format(err)) Попытка 0 прошла успешно Попытка 1 прошла успешно Попытка 2 прошла успешно Возникла ошибка: "name 'text' is not defined"

Вывод списка

Ниже пример того как выводится список в одну строку:

a = ['python', 3, 'лучший', 'язык', 'программирования'] for val in a: print(val, end=' ') python 3 лучший язык программирования

Если нужно перечислить элементы списка в столбик с указанием порядковых номеров, то это можно сделать следующим образом:

mylist = ["кот", "собака", "крот", "ёж"] for i, x in enumerate(mylist): print(" : ".format(a = i + 1, b = x)) 1 : кот 2 : собака 3 : крот 4 : ёж

Вывод массива

Здесь выводим массив построчно с указанием номеров элементов.

from array import * arr = array('i', [1,3,6,2,5]) for i in range(len(arr)): print("%d-й элемент массива = %d" %(i, arr[i])) 0-й элемент массива = 1 1-й элемент массива = 3 2-й элемент массива = 6 3-й элемент массива = 2 4-й элемент массива = 5

Вывод словаря

Здесь приведём два варианта для словарей.

Простой вариант:

a = for key, value in a.items(): print(": ".format(key,value)) 1: one 2: two 3: three

В виде таблицы:

arr = print(" _________________ ") print("| Rus : Eng |") print("|-----------------|") for key, value in arr.items(): print("| : |".format(r = key, w = value)) print("|-----------------|") _________________ | Rus : Eng | |-----------------| | Один : one | | Два : two | | Три : three | |-----------------|

Вывод матрицы

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

mtx = [[ 2, 4, 12], [ -6, 3, 9], [334, 0, 11]] for row in mtx: for x in row: print("%3d" %(x), end = " ") print() 2 4 12 -6 3 9 334 0 11

Здесь мы создали матрицу в виде двумерных списков, но если вы работаете с матрицами с помощью библиотеки NumPy, то там вывод в консоль форматируется автоматически.

Comments are closed, but trackbacks and pingbacks are open.