Классы встроенных исключений 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Классы встроенных исключений



try:

x = 1 / 0 # Ошибка: деление на 0

except ArithmeticError: # Указываем базовый класс

print("Обработали деление на 0")

Пользовательские исключения

>>> raise ValueError("Описание исключения")

Traceback (most recent call last):

File "<pyshell#0>", line 1, in <module>

raise ValueError("Описание исключения")

ValueError: Описание исключения

 

 

try:

raise ValueError("Описание исключения")

except ValueError as msg:

print(msg) # Выведет: Описание исключения

 

 

class MyError(Exception):

def __init__(self, value):

self.msg = value

def __str__(self):

return self.msg

# Обработка пользовательского исключения

try:

raise MyError("Описание исключения")

except MyError as err:

print(err) # Вызывается метод __str__()

print(err.msg) # Обращение к атрибуту класса

# Повторно возбуждаем исключение

raise MyError("Описание исключения")

 

 

class MyError(Exception): pass

try:

raise MyError("Описание исключения")

except MyError as err:

print(err) # Выведет: Описание исключения

 

 

try:

raise ValueError # Эквивалентно: raise ValueError()

except ValueError:

print("Сообщение об ошибке")

 

 

try:

x = 1 / 0

except Exception as err:

raise ValueError() from err

 

 

class MyError(Exception): pass

try:

raise MyError("Сообщение об ошибке")

except MyError as err:

print(err)

raise # Повторно возбуждаем исключение

 

 

try:

x = -3

assert x >= 0, "Сообщение об ошибке"

except AssertionError as err:

print(err) # Выведет: Сообщение об ошибке

Итераторы, контейнеры и перечисления

class MyIterator: # Определяем класс-итератор

...

it = MyIterator() # Создаем его экземпляр

for v in it: # и используем в цикле for

...

 

 

class MyList: # Определяем класс-список

...

class MyDict: # Определяем класс-словарь

...

lst, dct = MyList(), MyDict() # Используем их

lst[0] = 1

dct["first"] = 578

print(lst[1]), print(dct["second"])

 

 

from enum import Enum # Импортируем базовый класс Enum

class Versions(Enum): # Определяем класс-перечисление

Python2.7 = "2.7"

Python3.4 = "3.4"

# Используем его

if python_version == Versions.Python3.4:

...

Итераторы

Листинг 15.1. Класс-итератор

class ReverseString:

def __init__(self, s):

self.__s = s

def __iter__(self):

self.__i = 0

return self

def __next__(self):

if self.__i > len(self.__s) - 1:

raise StopIteration

else:

a = self.__s[-self.__i - 1]

self.__i = self.__i + 1

return a

 

 

>>> s = ReverseString("Python")

>>> for a in s: print(a, end="")

nohtyP

 

Листинг 15.2. Расширенный класс-итератор

class ReverseString:

...

def __len__(self):

return len(self.__s)

def __str__(self):

return self.__s[::-1]

 

 

>>> s = ReverseString("Python")

>>> print(len(s))

>>> print(str(s))

nohtyP

Контейнеры

Контейнеры-последовательности

Листинг 15.3. Класс MutableString

class MutableString:

def __init__(self, s):

self.__s = list(s)

 

# Реализуем функциональность итератора

def __iter__(self):

self.__i = 0

return self

def __next__(self):

if self.__i > len(self.__s) - 1:

raise StopIteration

else:

a = self.__s[self.__i]

self.__i = self.__i + 1

return a

def __len__(self):

return len(self.__s)

 

def __str__(self):

return "".join(self.__s)

 

# Определяем вспомогательный метод, который будет проверять

# корректность индекса

def __iscorrectindex(self, i):

if type(i) == int or type(i) == slice:

if type(i) == int and i > self.__len__() - 1:

raise IndexError

else:

raise TypeError

 

# Реализуем функциональность контейнера-списка

def __getitem__(self, i):

self.__iscorrectindex(i)

return self.__s[i]

def __setitem__(self, i, v):

self.__iscorrectindex(i)

self.__s[i] = v

def __delitem__(self, i):

self.__iscorrectindex(i)

del self.__s[i]

def __contains__(self, v):

return v in self.__s

 

 

>>> s = MutableString("Python")

>>> print(s[-1])

n

>>> s[0] = "J"

>>> del s[2:4]

>>> print(s)

Juon

 

 

>>> s[9] = "u"

Контейнеры-словари

Листинг 15.3. Класс Version

class Version:

def __init__(self, major, minor, sub):

self.__major = major # Старшая цифра

self.__minor = minor # Младшая цифра

self.__sub = sub # Подверсия

def __str__(self):

return str(self.__major) + "." + str(self.__minor) + "." +

str(self.__sub)

 

# Реализуем функциональность словаря

def __getitem__(self, k):

if k == "major":

return self.__major

elif k == "minor":

return self.__minor

elif k == "sub":

return self.__sub

else:

raise IndexError

def __setitem__(self, k, v):

if k == "major":

self.__major = v

elif k == "minor":

self.__minor = v

elif k == "sub":

self.__sub = v

else:

raise IndexError

def __delitem__(self, k):

raise TypeError

def __contains__(self, v):

return v == "major" or v == "minor" or v == "sub"

 

 

>>> v = Version(3, 4, 3)

>>> print(v["major"])

>>> v["sub"] = 4

>>> print(str(v))

3.4.4

Перечисления

from enum import Enum

class Versions(Enum):

V2_7 = "2.7"

V3_4 = "3.4"

 

 

from enum import IntEnum

class Colors(IntEnum):

Red = 1

Green = 2

Blue = 3

 

 

from enum import Enum

class Versions(Enum):

V2_7 = "2.7"

V3_4 = "3.4"

MostFresh = "3.4"

 

 

from enum import Enum, unique

@unique

class Versions(Enum):

V2_7 = "2.7"

V3_4 = "3.4"

 

 

>>> e = Versions.V3_4

>>> e

<Versions.V3_4: '3.4'>

>>> e.value

'3.4'

>>> e == Versions.V2_7

False

 

 

>>> type(Colors)

<class 'enum.EnumMeta'>

>>> from enum import EnumMeta

>>> type(Colors) == EnumMeta

True

 

 

>>> type(Colors.Red)

<enum 'Colors'>

>>> type(Colors.Red) == Colors

True

 

 

>>> Versions.V3_4

<Versions.V3_4: '3.4'>

>>> e = Versions.V3_4

>>> e

<Versions.V3_4: '3.4'>

 

 

>>> Versions["V3_4"]

<Versions.V3_4: '3.4'>

 

 

>>> Versions("3.4")

<Versions.V3_4: '3.4'>

 

 

>>> Versions.V2_7.name, Versions.V2_7.value

('V2_7', '2.7')

 

 

>>> list(Colors)

[<Colors.Red: 1>, <Colors.Green: 2>, <Colors.Blue: 3>]

>>> for c in Colors: print(c.value, end = " ")

1 2 3

 

 

>>> e = Versions.V3_4

>>> e == Versions.V3_4

True

>>> e!= Versions.V2_7

True

>>> e in Versions

True

>>> e in Colors

False

 

 

>>> Colors.Red + 1 # Значение Colors.Red - 1

>>> Colors.Green!= 3 # Значение Colors.Green - 2

True

>>> ["a", "b", "c"][Colors.Red]

'b'

 

Листинг 15.4. Перечисление, включающее атрибуты и методы

from enum import Enum

class VersionExtended(Enum):

V2_7 = "2.7"

V3_4 = "3.4"

 

# Методы экземпляра класса.

# Вызываются у элемента перечисления

def describe(self):

return self.name, self.value

def __str__(self):

return str(__class__.__name__) + "." + self.name + ": " +

self.value

 

# Метод объекта класса.

# Вызывается у самого класса перечисления

@classmethod

def getmostfresh(cls):

return cls.V3_4

 

 

>>> d = VersionExtended.V2_7.describe()

>>> print(d[0] + ", " + d[1])

V2_7, 2.7

>>> print(VersionExtended.V2_7)

VersionExtended.V2_7: 2.7

>>> print(VersionExtended.getmostfresh())

VersionExtended.V3_4: 3.4

 

 

class ExtendedColors(Colors):

pass

Работа с файлами и каталогами

Открытие файла

>>> "C:\\temp\\new\\file.txt" # Правильно

'C:\\temp\\new\\file.txt'

>>> r"C:\temp\new\file.txt" # Правильно

'C:\\temp\\new\\file.txt'

>>> "C:\temp\new\file.txt" # Неправильно!!!

'C:\temp\new\x0cile.txt'

 

 

>>> open("C:\temp\new\file.txt")

Traceback (most recent call last):

File "<pyshell#0>", line 1, in <module>

open("C:\temp\new\file.txt")

OSError: [Errno 22] Invalid argument: 'C:\temp\new\x0cile.txt'

 

 

>>> import os.path # Подключаем модуль

>>> # Файл в текущем рабочем каталоге (C:\book\)

>>> os.path.abspath(r"file.txt")

'C:\\book\\file.txt'

 

 

>>> # Открываемый файл в C:\book\folder1\

>>> os.path.abspath(r"folder1/file.txt")

'C:\\book\\folder1\\file.txt'

>>> # Открываемый файл в C:\book\folder1\folder2\

>>> os.path.abspath(r"folder1/folder2/file.txt")

'C:\\book\\folder1\\folder2\\file.txt'

 

 

>>> # Открываемый файл в C:\

>>> os.path.abspath(r"../file.txt")

'C:\\file.txt'

 

 

>>> # Открываемый файл в C:\book\folder1\

>>> os.path.abspath(r"/book/folder1/file.txt")

'C:\\book\\folder1\\file.txt'

>>> # Открываемый файл в C:\book\folder1\folder2\

>>> os.path.abspath(r"/book/folder1/folder2/file.txt")

'C:\\book\\folder1\\folder2\\file.txt'

 

 

>>> os.path.sep

'\\'

>>> os.path.abspath(r"C:/book/folder1/file.txt")

'C:\\book\\folder1\\file.txt'

 

Листинг 16.1. Содержимое файла C:\book\test.py

# -*- coding: utf-8 -*-

import os, sys

print("%-25s%s" % ("Файл:", os.path.abspath(__file__)))

print("%-25s%s" % ("Текущий рабочий каталог:", os.getcwd()))

print("%-25s%s" % ("Каталог для импорта:", sys.path[0]))

print("%-25s%s" % ("Путь к файлу:", os.path.abspath("file.txt")))

print("-" * 40)

import folder1.module1 as m

m.get_cwd()

 

Листинг 16.2. Содержимое файла C:\book\folder1\module1.py

# -*- coding: utf-8 -*-

import os, sys

def get_cwd():

print("%-25s%s" % ("Файл:", os.path.abspath(__file__)))

print("%-25s%s" % ("Текущий рабочий каталог:", os.getcwd()))

print("%-25s%s" % ("Каталог для импорта:", sys.path[0]))

print("%-25s%s" % ("Путь к файлу:", os.path.abspath("file.txt")))

 

 

C:\>cd C:\book

C:\book>test.py

Файл: C:\book\test.py

Текущий рабочий каталог: C:\book

Каталог для импорта: C:\book

Путь к файлу: C:\book\file.txt

----------------------------------------

Файл: C:\book\folder1\module1.py

Текущий рабочий каталог: C:\book

Каталог для импорта: C:\book

Путь к файлу: C:\book\file.txt

 

 

C:\book>cd C:\

C:\>C:\book\test.py

Файл: C:\book\test.py

Текущий рабочий каталог: C:\

Каталог для импорта: C:\book

Путь к файлу: C:\file.txt

----------------------------------------

Файл: C:\book\folder1\module1.py

Текущий рабочий каталог: C:\

Каталог для импорта: C:\book

Путь к файлу: C:\file.txt

 

Листинг 16.3. Пример использования функции chdir()

# -*- coding: utf-8 -*-

import os, sys

# Делаем каталог с исполняемым файлом текущим

os.chdir(os.path.dirname(os.path.abspath(__file__)))

print("%-25s%s" % ("Файл:", __file__))

print("%-25s%s" % ("Текущий рабочий каталог:", os.getcwd()))

print("%-25s%s" % ("Каталог для импорта:", sys.path[0]))

print("%-25s%s" % ("Путь к файлу:", os.path.abspath("file.txt")))

 

 

C:\book>C:\Python34\python test.py

 

 

C:\>C:\book\test.py

Файл: C:\book\test.py

Текущий рабочий каталог: C:\book

Каталог для импорта: C:\book

Путь к файлу: C:\book\file.txt

 

 

>>> f = open(r"file.txt", "w") # Открываем файл на запись

>>> f.write("String1\nString2") # Записываем две строки в файл

>>> f.close() # Закрываем файл

 

 

>>> # Бинарный режим (символ \r остается)

>>> with open(r"file.txt", "rb") as f:

for line in f:

print(repr(line))

 

b'String1\r\n'

b'String2'

>>> # Текстовый режим (символ \r удаляется)

>>> with open(r"file.txt", "r") as f:

for line in f:

print(repr(line))

'String1\n'

'String2'

 

 

>>> f = open(r"file.txt", "w", encoding="utf-8")

>>> f.write("Строка") # Записываем строку в файл

>>> f.close() # Закрываем файл

 

 

>>> with open(r"file.txt", "r", encoding="utf-8") as f:

for line in f:

print(line)

 

Строка

 

 

>>> f = open(r"file.txt", "w", encoding="utf-8-sig")

>>> f.write("Строка") # Записываем строку в файл

>>> f.close() # Закрываем файл

 

 

>>> with open(r"file.txt", "r", encoding="utf-8") as f:

for line in f:

print(repr(line))

 

'\ufeffСтрока'

>>> with open(r"file.txt", "r", encoding="utf-8-sig") as f:

for line in f:

print(repr(line))

 

'Строка'

 

 

>>> with open(r"file.txt", "w", encoding="utf-16") as f:

f.write("Строка")

 

>>> with open(r"file.txt", "r", encoding="utf-16") as f:

for line in f:

print(repr(line))

 

'Строка'

Методы для работы с файлами

with open(r"file.txt", "w", encoding="cp1251") as f:

f.write("Строка") # Записываем строку в файл

# Здесь файл уже закрыт автоматически

 

 

>>> # Текстовый режим

>>> f = open(r"file.txt", "w", encoding="cp1251")

>>> f.write("Строка1\nСтрока2") # Записываем строку в файл

>>> f.close() # Закрываем файл

>>> # Бинарный режим

>>> f = open(r"file.txt", "wb")

>>> f.write(bytes("Строка1\nСтрока2", "cp1251"))

>>> f.write(bytearray("\nСтрока3", "cp1251"))

>>> f.close()

 

 

>>> # Текстовый режим

>>> f = open(r"file.txt", "w", encoding="cp1251")

>>> f.writelines(["Строка1\n", "Строка2"])

>>> f.close()

>>> # Бинарный режим

>>> f = open(r"file.txt", "wb")

>>> arr = [bytes("Строка1\n", "cp1251"), bytes("Строка2", "cp1251")]

>>> f.writelines(arr)

>>> f.close()

 

 

>>> f = open(r"file.txt", "r") # Открываем файл для чтения

>>> f.writable()

False

>>> f = open(r"file.txt", "w") # Открываем файл для записи

>>> f.writable()

True

 

 

>>> # Текстовый режим

>>> with open(r"file.txt", "r", encoding="cp1251") as f:

f.read()

 

'Строка1\nСтрока2'

>>> # Бинарный режим

>>> with open(r"file.txt", "rb") as f:

f.read()

 

b'\xd1\xf2\xf0\xee\xea\xe01\n\xd1\xf2\xf0\xee\xea\xe02'

 

 

>>> # Текстовый режим

>>> f = open(r"file.txt", "r", encoding="cp1251")

>>> f.read(8) # Считываем 8 символов

'Строка1\n'

>>> f.read(8) # Считываем 8 символов

'Строка2'

>>> f.read(8) # Достигнут конец файла

''

>>> f.close()

 

 

>>> # Текстовый режим

>>> f = open(r"file.txt", "r", encoding="cp1251")

>>> f.readline(), f.readline()

('Строка1\n', 'Строка2')

>>> f.readline() # Достигнут конец файла

''

>>> f.close()

>>> # Бинарный режим

>>> f = open(r"file.txt", "rb")

>>> f.readline(), f.readline()

(b'\xd1\xf2\xf0\xee\xea\xe01\n', b'\xd1\xf2\xf0\xee\xea\xe02')

>>> f.readline() # Достигнут конец файла

b''

>>> f.close()

 

 

>>> f = open(r"file.txt", "r", encoding="cp1251")

>>> f.readline(2), f.readline(2)

('Ст', 'ро')

>>> f.readline(100) # Возвращается одна строка, а не 100 символов

'ка1\n'

>>> f.close()

 

 

>>> # Текстовый режим

>>> with open(r"file.txt", "r", encoding="cp1251") as f:

f.readlines()

['Строка1\n', 'Строка2']

>>> # Бинарный режим

>>> with open(r"file.txt", "rb") as f:

f.readlines()

 

[b'\xd1\xf2\xf0\xee\xea\xe01\n', b'\xd1\xf2\xf0\xee\xea\xe02']

 

 

>>> # Текстовый режим

>>> f = open(r"file.txt", "r", encoding="cp1251")

>>> f.__next__(), f.__next__()

('Строка1\n', 'Строка2')

>>> f.__next__() # Достигнут конец файла

Traceback (most recent call last):

File "<pyshell#26>", line 1, in <module>

f.__next__() # Достигнут конец файла

StopIteration

>>> f.close()

 

 

>>> f = open(r"file.txt", "r", encoding="cp1251")

>>> for line in f: print(line.rstrip("\n"), end=" ")

 

Строка1 Строка2

>>> f.close()

 

 

>>> f = open(r"file.txt", "r", encoding="cp1251")

>>> f.fileno() # Дескриптор файла

>>> f.close()

 

 

>>> f = open(r"file.txt", "r+", encoding="cp1251")

>>> f.read()

'Строка1\nСтрока2'

>>> f.truncate(5)

>>> f.close()

>>> with open(r"file.txt", "r", encoding="cp1251") as f:

f.read()

 

'Строк'

 

 

>>> with open(r"file.txt", "w", encoding="cp1251") as f:

f.write("String1\nString2")

 

>>> f = open(r"file.txt", "r", encoding="cp1251")

>>> f.tell() # Указатель расположен в начале файла

>>> f.readline() # Перемещаем указатель

'String1\n'

>>> f.tell() # Возвращает 9 (8 + '\r'), а не 8!!!

>>> f.close()

 

 

>>> f = open(r"file.txt", "rb")

>>> f.readline() # Перемещаем указатель

b'String1\r\n'

>>> f.tell() # Теперь значение соответствует

>>> f.close()

 

 

>>> import io

>>> io.SEEK_SET, io.SEEK_CUR, io.SEEK_END

(0, 1, 2)

 

 

>>> import io

>>> f = open(r"file.txt", "rb")

>>> f.seek(9, io.SEEK_CUR) # 9 байтов от указателя

>>> f.tell()

>>> f.seek(0, io.SEEK_SET) # Перемещаем указатель в начало

>>> f.tell()

>>> f.seek(-9, io.SEEK_END) # -9 байтов от конца файла

>>> f.tell()

>>> f.close()

 

 

>>> f = open(r"C:\temp\new\file.txt", "r")

>>> f.seekable()

True

 

 

>>> f = open(r"file.txt", "r+b")

>>> f.name, f.mode, f.closed

('file.txt', 'rb+', False)

>>> f.close()

>>> f.closed

True

 

 

>>> f = open(r"file.txt", "a", encoding="cp1251")

>>> f.encoding

'cp1251'

>>> f.close()

 

 

>>> import sys

>>> sys.stdout.encoding

'cp1251'

 

 

>>> f = open(r"file.txt", "w", encoding="cp1251")

>>> f.buffer.write(bytes("Строка", "cp1251"))

>>> f.close()

16.3. Доступ к файлам с помощью модуля os

>>> import os

>>> os.name # Значение в ОС Windows 8

'nt'

>>> import os # Подключаем модуль

 

 

>>> mode = os.O_WRONLY | os.O_CREAT | os.O_TRUNC

>>> f = os.open(r"file.txt", mode)

>>> os.write(f, b"String1\n") # Записываем данные

>>> os.close(f) # Закрываем файл

 

 

>>> mode = os.O_WRONLY | os.O_CREAT | os.O_APPEND

>>> f = os.open(r"file.txt", mode)

>>> os.write(f, b"String2\n") # Записываем данные

>>> os.close(f) # Закрываем файл

 

 

>>> f = os.open(r"file.txt", os.O_RDONLY)

>>> os.read(f, 50) # Читаем 50 байт

b'String1\nString2\n'

>>> os.close(f) # Закрываем файл

 

 

>>> f = os.open(r"file.txt", os.O_RDONLY | os.O_BINARY)

>>> os.read(f, 50) # Читаем 50 байт

b'String1\r\nString2\r\n'

>>> os.close(f) # Закрываем файл

 

 

>>> f = os.open(r"file.txt", os.O_RDONLY)

>>> os.read(f, 5), os.read(f, 5), os.read(f, 5), os.read(f, 5)

(b'Strin', b'g1\nS', b'tring', b'2\n')

>>> os.read(f, 5) # Достигнут конец файла

b''

>>> os.close(f) # Закрываем файл

 

 

>>> f = os.open(r"file.txt", os.O_RDONLY | os.O_BINARY)

>>> os.lseek(f, 0, os.SEEK_END) # Перемещение в конец файла

>>> os.lseek(f, 0, os.SEEK_SET) # Перемещение в начало файла

>>> os.lseek(f, 9, os.SEEK_CUR) # Относительно указателя

>>> os.lseek(f, 0, os.SEEK_CUR) # Текущее положение указателя

>>> os.close(f) # Закрываем файл

 

 

>>> fd = os.open(r"file.txt", os.O_RDONLY)

>>> fd

>>> f = os.fdopen(fd, "r")

>>> f.fileno() # Объект имеет тот же дескриптор

>>> f.read()

'String1\nString2\n'

>>> f.close()

16.4. Классы StringIO и BytesIO

>>> import io # Подключаем модуль

>>> f = io.StringIO("String1\n")

>>> f.getvalue() # Получаем содержимое файла

'String1\n'

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\n")

>>> f.tell() # Позиция указателя

>>> f.seek(0, 2) # Перемещаем указатель в конец файла

>>> f.tell() # Позиция указателя

>>> f.seek(0) # Перемещаем указатель в начало файла

>>> f.tell() # Позиция указателя

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\n")

>>> f.seek(0, 2) # Перемещаем указатель в конец файла

>>> f.write("String2\n") # Записываем строку в файл

>>> f.getvalue() # Получаем содержимое файла

'String1\nString2\n'

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO()

>>> f.writelines(["String1\n", "String2\n"])

>>> f.getvalue() # Получаем содержимое файла

'String1\nString2\n'

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2\n")

>>> f.read()

'String1\nString2\n'

>>> f.seek(0) # Перемещаем указатель в начало файла

>>> f.read(5), f.read(5), f.read(5), f.read(5), f.read(5)

('Strin', 'g1\nSt', 'ring2', '\n', '')

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2")

>>> f.readline(), f.readline(), f.readline()

('String1\n', 'String2', '')

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2\nString3\n")

>>> f.readline(5), f.readline(5)

('Strin', 'g1\n')

>>> f.readline(100) # Возвращается одна строка, а не 100 символов

'String2\n'

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2\nString3")

>>> f.readlines()

['String1\n', 'String2\n', 'String3']

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2\nString3")

>>> f.readlines(14)

['String1\n', 'String2\n']

>>> f.seek(0) # Перемещаем указатель в начало файла

>>> f.readlines(17)

['String1\n', 'String2\n', 'String3']

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2")

>>> f.__next__(), f.__next__()

('String1\n', 'String2')

>>> f.__next__()

... Фрагмент опущен...

StopIteration

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2")

>>> for line in f: print(line.rstrip())

 

String1

String2

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2\nString3")

>>> f.truncate(15) # Обрезаем файл

>>> f.getvalue() # Получаем содержимое файла

'String1\nString2'

>>> f.close() # Закрываем файл

 

 

>>> f = io.StringIO("String1\nString2\nString3")

>>> f.seek(15) # Перемещаем указатель

>>> f.truncate() # Обрезаем файл до указателя

>>> f.getvalue() # Получаем содержимое файла

'String1\nString2'

>>> f.close() # Закрываем файл

 

 

>>> import io # Подключаем модуль

>>> f = io.BytesIO(b"String1\n")

>>> f.seek(0, 2) # Перемещаем указатель в конец файла

>>> f.write(b"String2\n") # Пишем в файл

>>> f.getvalue() # Получаем содержимое файла

b'String1\nString2\n'

>>> f.seek(0) # Перемещаем указатель в начало файла

>>> f.read() # Считываем данные

b'String1\nString2\n'

>>> f.close() # Закрываем файл

 

 

>>> f = io.BytesIO(b"Python")

>>> buf = f.getbuffer()

>>> buf[0] # Получаем значение по индексу

b'P'

>>> buf[0] = b"J" # Изменяем значение по индексу

>>> f.getvalue() # Получаем содержимое

b'Jython'

>>> buf.tolist() # Преобразуем в список чисел

[74, 121, 116, 104, 111, 110]

>>> buf.tobytes() # Преобразуем в тип bytes

b'Jython'

>>> f.close() # Закрываем файл



Поделиться:


Последнее изменение этой страницы: 2016-06-23; просмотров: 213; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.219.166 (0.393 с.)