![]() |
Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Работа с файловой системой
Объекты типа file предназначены для работы с внешними данными. Файловые объекты должны поддерживать основные методы: read(), write(), readline(), readlines(), seek(), tell(), close(). Встроенная функция open(file, mode=’r/w/x/a/b/t/+’, buffering=None, encoding=None, errors=None, newline=None, closefd=True) # Открывает файл и возвращает поток. ‘r’ — для чтения (выступает значением по умолчанию). ‘w’ —для записи, содержимое файла удаляется, если файла с таким именем нет, то он автоматически создается. ‘x’ — открытие на запись, если файл не существует, иначе исключение. ‘a’ — дозаписывание информации в конец существующего файла. ‘b’ — открытие в двоичном режиме. ‘t’ — открытие в текстовом режиме (выступает значением по умолчанию). ‘+’ — открытие на чтение и запись. Кроме того, вышеперечисленные режимы могут быть объеденены. По умолчанию режим ‘rt’. Если вы хотите произвести чтение в двоичном режиме, то укажите ‘rb’. Аргумент encoding задает кодировку и используется только в текстовом режиме чтения файла. Пример копирования файла: f = open(" inp. txt", " r") # открытие файла для чтения g = open(" outp. txt", " w") # открытие файла для записи for line in f. readlines():# построчное чтение из файла f g. write( line) # запись строки в файл g g. close() # закрытие файла g f.close() # закрытие файла f Если в аргументе метода read ничего не указать, то он выведет всю информацию. Но можно обращаться к файлу с целью побитового вывода. (вспоминаем, что кириллица занимает по 2 байта на символ). Итак, пробуем вывести первые 6 букв: >>> f = open('file.txt', 'r') >>> print ( f.read(12) ) Еще один способ используемый для этого цикл. f = open('file.txt', 'r') for line in f: print line f.close() Работы с файлом, его нужно обязательно закрыть. Используем для этого метод close(). Записываем информацию в файл: Итак, открываем файл в режиме запись ‘w’, при этом все содержимое файла удалиться. И записываем в него слово ‘string’ с помощью метода write(): f = open('file.txt', 'w') f.write('string1\n') #\n - перенос строки f.write('sting2') f.close() # Проверяем, записались ли значения f = open('file.txt', 'r') print ( f.read() ) f.close() Результат: string1 sting2 f = open('file.txt', 'w') f.write('abvgd \ n') # \ n - перенос строки f.seek(3) #переход на три байта f.write('0000n') # вставляем после 3 символа и стираем все остальное f.write('hello') f.close() # читаем значение построчно f = open('file.txt', 'r') print ( f.readline() ) f.close() # читаем ВСЕ строки f = open('file.txt', 'r') print ( f.readlines() ) f.close() Результат: abv0000 ['abv0000n', 'hello'] Вносим изменения в файл, не затронув при этом старые данные: f = open('file.txt', 'w') f.writelines('test') f.close() f = open('file.txt', 'r') print ( f.read() ) f.close() Результат: abv0000 ['abv0000n', 'hello'] test Python имеет встроенные библиотеки. В этом примере сохраним в бинарном файле структуру списка, прочитать ее и сохраним строку в текстовом файле. Для преобразования структуры данных используем стандартную библиотеку «pickle» Import pickle mylist = ["Это" , "-", 4, 13327] # Откроем файл C:\ b. dat для записи. Символ «r» предотвращает замену # специальных сиволов (таких как \n, \t, \b и др.). mf = file (r"C: \b.dat", "w") pickle.dump(mylist, mf) mf.close() mf = file(r"C:\text.txt", "w") mf.write("Это - a sample string") myfile.close() myfile = file (r"C:\text.txt") print ( myfile.read() ) 'This is a sample string' myfile. close() # Открываем файл для чтения myfile = file(r"C:\binary.dat") loadedlist = pickle.load(myfile) myfile . close() print ( loadedlist ) [' This', ' is', 4, 13327] Списки Для хранения группы (и однородных) объектов используются списки. Они задаются тремя способами: · Простое перечисление. Например a nimal = [" Бобер" , 2. 6, 5] flower = [" Лилия" , 100, 1 00] · Преобразование строки в список. Например b = list("help") # b=['h', 'e', 'l', 'p'] · Создание с помощью списковых включений. Например c=[x**2 for x in range(20) if x%3==1] # c=[1,16,49,100,169,256,361]
Операторы и функции работы со списками: len(s) – длина последовательности s x in s – проверка принадлежности элемента последовательности или принадлежность подстроки строке. x not in s = not x in s s + s1 – конкатенация последовательностей s*n или n*s – последовательность из n раз повторенной s. Если n < 0, возвращается пустая последовательность. s[i] –i-й элемент s или len(s)+i-й, если i < 0 s[i:j:d] Срез из последовательности s от i до j с шагом min(s) Наименьший элемент s max(s) Наибольший элемент s s[i] = x i-й элемент списка s заменяется на x s[i:j:d] = t Срез от i до j (с шагом d) заменяется на (список) t del s[i:j:d] – Удаление элементов среза из последовательности Кроме того, для списков определен ряд методов. append(x) – Добавляет элемент в конец последовательности count(x) – Считает количество элементов, равных x extend(s) – Добавляет к концу последовательности последовательность s index(x) – Возвращает наименьшее i, такое, что s[i] == x. Возбуждает исключение ValueError, если x не найден в s insert(i, x) – Вставляет элемент x в i-й промежуток pop(i) – Возвращает i-й элемент, удаляя его из последовательности reverse() – Меняет порядок элементов s на обратный sort([cmpfunc]) – Сортирует элементы s. Может быть указана своя функция сравнения cmpfunc. Для преобразования кортежа в список есть функция list, для обратной операции – tuple. Стеки Стек – упорядоченная коллекция элементов, где добавление нового или удаление существующих всегда происходит только на одном из концов. Этот конец обычно называют “вершиной”, а противоположный ему - “основанием”. Операции над стеком · s tack() создаёт новый пустой стек. Параметры не нужны, возвращает пустой стек. · push(item) добавляет новый элемент на вершину стека. В качестве параметра выступает элемент; функция ничего не возвращает. · pop() удаляет верхний элемент из стека. Параметры не требуются, функция возвращает элемент. Стек изменяется. · peek() возвращает верхний элемент стека, но не удаляет его. Параметры не требуются, стек не модифицируется. · isEmpty() проверяет стек на пустоту. Параметры не требуются, возвращает булево значение. · size() возвращает количество элементов в стеке. Параметры не требуются, тип результата – целое число
Пример реализации стека: class Stack: def __init__(self) : self.items=[] def isEmpty(self) : return self.items=[] def push(self,item) : self.items.append(item) def pop(self) : return self.items.pop() def peek(self) : return self.items[len(self.items)-1] def size(self) : return len(self.items) from python.basic.stack import Stack s=Stack print(s.isEmpty s.push(4) s.push(‘dog’) print(s.speek()) s.push(True) print(s.size()) print(s.isEmpty()) print(s.pop()) print(s.pop()) print(s.size()) Множества Множество – структура данных из различных элементов, где порядок элементов не определён. Элементы можно добавлять и удалять, перебирать. Можно выполнять операции над множествами (объединение, пересечение, разность). Можно проверять принадлежность элемента множеству. Элементами множества могут быть с неизменяемыми типами данных: числа, строки, кортежи (неизменяемые списки). Значения с изменяемым типом не могут быть элементами множества – список (но можно сделать кортеж) или другое множество. Это связано с особенностями представления множества в памяти компьютера. Множество задается перечислением элементов в фигурных скобках. Например: A={1,2,3} Функция set() создает пустое множество. Функция set с параметрами в виде списка, строки или кортежа вернет множество, составленное из элементов списка, строки, кортежа. Например: A = set('один') print(A) выведет {'д', 'и', 'н', 'о'}. Каждый элемент может входить в множество только один раз, порядок задания элементов не важен. Например, программа: A = set('абракадабра') # A={‘ a’, ‘б’, ‘д’, ‘к’, ‘р’} B = set('бардак') # В={‘ a’, ‘б’, ‘д’, ‘к’, ‘р’} print(A==B) выдаст значение True. Примеры присвоения значений: a= set() # a – пусто b = {‘б’, ‘ e’, ‘р’} c= set('хан') # с={‘х’, ‘а’, ‘н’} d={2*i for i in range(5)} # d={0, 2, 4, 6, 8} e=set([‘бер ’, ‘один ’, ‘один ’, ‘one’, ‘one’, ‘ein’]) # е ={‘бер ’, ‘один ’, ‘one’, ‘ein’} Число элементов определяет функция len(a). Например: print( len( set(‘четыре’))) # выведет число 5 Перебор вех элементов множества можно при помощи цикла for f={1,3,4,7} for san in f : print(san) # напечатает 7 1 4 3 Принадлежность элемента можно проверить с помощью опереации in . print(3 in {1,3,4,7}) # напечатает True Новый элемент добавляет метод add. a={1,3,4,7} a. add(6) # a= {1,3,4,6,7} Метод pop удаляет из множества один случайный элемент, возвращая его значение. При пустом множестве генерируется исключение KeyError Функция list из множества формирует список. Операции с множествами: len( s) – число элементов в множестве x in s – принадлежность x s s. isdisjoint( s1) – истина в случае пустого пересечения множеств s== s1 – истина в случае совпадения множеств s.issubset(s1) – s подмножество s1 s.issuperset(s1) – s1 подмножество s s. union( s1, s2…) – объединение множеств s. intersection( s1, s2,…) – пересечение s с остальными множествами s.difference(s1,s2…) – вычитание из s подмножеств s.simmetric_difference(s1) – исключающее или s. copy( s1) – копирование. Операции изменения множества: s. update( s1, s2,…) – добавляет элементы в множестве s. intersection_ update( s1, s2,…) – пересечение в множестве оставляет s. difference_ update( s1, s2,…) – вычитает из множества s. simmetric_ difference_ update( s1, s2,…) – оставляет элементы, встречающиеся только в одном множестве s. add( b) – добавляет элемент s. remove( b) – удаляет элемент. При удалении не существующего элемента формируется исключение KeyError. s. discard( b) – удаляет элемент s. pop() – удаляет случайный элемент s. clear() – очищает множество. Пример: Удалить все повторяющиеся элементы из списка. a=[7,9,9,4,2,6,5,9,4] # a - множество s= set( arr) # преобразует список во множство s=[2,4,5,7,9] arr= list( s) # преобразует множество в список без повторений значений Компьютерная графика Можно рисунки формировать через псевдо графику и символы:
Python работает с несколькими графическими библиотеками, обеспечивая создание сложных приложений с развитым графическим пользовательским интерфейсом. В этой презентации рассматриваются использование «черепашки» для создания графических примитивов и перемещения на плоскости. Tkinter – кроссплатформенная библиотека, используемая в большинстве распространённых ОС (Windows, Linux, Mac OS и др.), позволяющая разрабатывать программы с графическим интерфейсом на языке Python. Tkinter расшифровывается как «Tk interface». PyQt – мультиплатформенная библиотека, представляющая из себя набор модулей Python. Она содержит более 300 классов и почти 6000 функций и методов. Turtle – простая библиотека языка Python, позволяющая рисовать на экране несложные элементы с помощью управления «Черепашкой», которая перемещается по экрану и поворачивается в заданных направлениях, при этом оставляя (или, по выбору, не оставляя) за собой нарисованный след с заданными цветом и шириной. MatPlotLib – библиотека по визуализации математичесих функций. SciPy – набор алгоритмов и функций, созданных на основе NumPy, содержащей функции высокого уровня для вычислений и визуализации даных. PIL (Python Imaging Library) – библиотека по работе с изображениями в Python, поддерживающая: ·бинарные, полутоновые, индексированные, полноцветные и CMYK изображения; ·форматы BMP, EPS, GIF, JPEG, PDF, PNG, PNM, TIFF и некоторые другие на чтение и запись; ·множества форматов (ICO, MPEG, PCX, PSD, WMF и др.) для чтения; ·конвертирование изображений из одного формата в другой; ·редактирование изображений (использование различных фильтров, масштабирование, рисование, матричные операции и т. д.); PyOpenGL — библиотека, позволяющая в программах на языке Python легко работать с функциями OpenGL, GLU и GLUT, а также с рядом расширений OpenGL. pygame – библиотека модуль Python с открытым исходным кодом для разработки игр и мультимедийных приложений. Черепашья графика Исполнитель «черепашка» управляется командами относительных («вперёд-назад» и «направо-налево») и абсолютных («перейти в точку с координатами...») перемещений. Исполнитель представляет собой «перо», оставляющее след на плоскости рисования. Перо можно поднять, тогда при перемещении след оставаться не будет. Кроме того, для пера можно установить толщину и цвет. Все эти функции исполнителя обеспечиваются модулем turtle («черепаха»). Приведённая программа создаёт графическое окно и помещает перо («черепашку») в исходное положение: import turtle # Инициализация turtle.reset() # Здесь могут быть вычисления и команды рисования turtle._root.mainloop() # Эта команда показывает окно, пока его не закроют
Полученное окно имеет фиксированный размер, зависящий от версии Python, перо позиционируется в центре. Идея рисования заключается в перемещении пера («черепашки») в точки окна рисования с указанными координатами или в указанных направлениях на заданные расстояния, а также в проведении отрезков прямых, дуг и окружностей.
|
Последнее изменение этой страницы: 2019-03-21; Просмотров: 279; Нарушение авторского права страницы