8. Ошибки и исключения

До сих пор о сообщениях об ошибках лишь упоминалось, но если вы пытались проделать примеры, то, наверное, видели некоторые из них. Есть (по меньшей мере) два отличимых вида ошибок: синтаксические ошибки (syntax errors) и исключения (exceptions).

8.1. Синтаксические ошибки (Syntax Errors)

Синтаксические ошибки (Syntax Errors), также известный как ошибки грамматического разбора (parsing errors), являются, пожалуй, наиболее распространенным видом жалоб пока вы все еще изучаете Python:

Генераторы списков

Допустим, имеется список, каждый элемент которого надо изменить на одну и туже величину. Это можно сделать очевидным, но далеко не лучшим способом:

>>> lst1
[4, 10, 7, 3, 8, 6, 4, 4, 8, 7, 7, 5, 4, 3, 7, 6, 7, 4, 5, 10]
>>> i = 0
>>> for item in lst1:
...     lst1[i] = item + 10
...     i += 1
... 
>>> lst1
[14, 20, 17, 13, 18, 16, 14, 14, 18, 17, 17, 15, 14, 13, 17, 16, 17, 14, 15, 20]

Есть более "хитрый" способ:

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

В модуле os есть методы для работы с файловой системой.

Узнать текущий каталог:

>>> os.getcwd()
'/home/pl/Documents/python'

Создать каталог:

>>> os.mkdir('TEXT')

Создать дерево каталогов:

>>> os.makedirs('ONE/TWO/THREE')
>>> os.listdir('ONE')
['TWO']
>>> os.listdir('ONE/TWO')
['THREE']

Список содержимого каталога (нерекурсивный):

Теги

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

Создание файла

Чтобы создать файл с помощью языка программирования Python, надо его открыть в режиме записи ('w', 'wb') или дозаписи ('a', 'ab').

f2 = open("text2.txt", 'w')

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

Теги

Подсчет количества строк, слов и букв в текстовом файле

Скрипту должно передаваться имя текстового файла. Например, в среде Windows в командной строке команда выглядит так:

words.py test.txt

Без слова python впереди.

Скрипт считает количество строк, слов и символов в файле.

Теги

Пример работы с данными, представляющими собой таблицу базы данных

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

pr.v|Vasil Vas|30.11.1976|34.5|8
mg.s|Kosin Stepa|08.03.1973|40.1|7
el.p|Pier Pety|16.07.1985|30.8|8

 

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

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

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

Анализ целочисленной выборки

fname = input('Имя файла: ')
ffile = open(fname)
sample = [] # список значений
for i in ffile:
    i = i.split()
    for j in i:
        j = int(j)
        sample.append(j)
 
length = len(sample)
minimum = min(sample)
maximum = max(sample)
print('Длина последовательности:',length)
print('Минимальное значение:',minimum)
print('Максимальное значение:',maximum)
 
def make_urange(urange,uranges): # заполняет список диапазонов
    i = minimum
    while i <= maximum:
        l = []
        l.append(i)
        i = i + urange
        if i < maximum:
          

Генерация последовательностей случайных объектов (равновероятных)

Алгоритм работы программы

  1. Программа запрашивает, какой тип данных хочет получить пользователь - целые числа, числа с плавающей точкой, символы (буквы), слова (в данном случае, наборы случайных символов).
  2. Вызывается соответствующая функция, которая возвращает либо список случайных объектов, указанного типа, либо строку из случайных символов.

Чтение данных из файла и запись их в словари

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

Файл points.txt

a 30 30
b 80 50
c 50 100
d 150 150
e 100 350
f 250 80
g 300 150
h 370 100
i 240 260
j 440 350
k 320 420

Файл graphs.txt