Учебный каталог Python
- Использование Python3 под Mac
- Типы данных для изучения Python
- Функция обучения Python
- Расширенные возможности обучения Python
- Функциональное программирование для изучения Python
- Модуль обучения Python
- Объектно-ориентированное программирование для изучения Python
- Расширенное объектно-ориентированное программирование для изучения Python
- Отладка ошибок и тестирование обучения Python
- Программирование ввода-вывода для изучения Python
- Процесс обучения Python и поток
- Регулярность изучения Python
- Общие модули для изучения Python
- Python обучение сетевому программированию
IO относится к вводу/выводу в компьютере, то есть к вводу и выводу. Поскольку программы и данные времени выполнения находятся в памяти и выполняются сверхбыстрым вычислительным ядром ЦП, в котором задействован обмен данными, обычно диски, сети и т. д., требуются интерфейсы ввода-вывода.
файл читать и писать
Над кодом:
try:
//读文件
f = open('/path/to/file', 'r')
print(f.read())
//写文件
f = open('/Users/michael/test.txt', 'w')
f.write('Hello, world!')
finally:
if f:
//关闭文件
f.close()
Эквивалентно:
//读文件
with open('/path/to/file', 'r') as f:
print(f.read())
//写文件
with open('/Users/michael/test.txt', 'w') as f:
f.write('Hello, world!')
открыть файл
Открыть текстовый файл
1. Откройте файл в режиме чтения
Чтобы открыть файловый объект в режиме чтения файлов, используйте встроенный в Pythonopen()
функция, передавая имя файла и идентификатор:
>>> f = open('/Users/michael/test.txt', 'r')
Идентификатор 'r' означает чтение, значит, мы успешно открыли файл.
2. Откройте файл в режиме записи
>>> f = open('/Users/michael/test.txt', 'w')
3. Откройте файл с кодировкой (чтение или запись)
Метод кодировки по умолчанию для чтения и записи файлов — UTF-8.Чтобы прочитать текстовые файлы, не закодированные в UTF-8, вам нужно указатьopen()
функция передана вencoding
Параметры, например, для чтения файлов в кодировке GBK:
>>> f = open('/Users/michael/gbk.txt', 'r', encoding='gbk')
Откройте бинарный файл
Для чтения двоичных файлов, таких как изображения, видео и т. д., используйте'rb'
Откройте файл в режиме:
>>> f = open('/Users/michael/test.jpg', 'rb')
прочитать файл
Если файл успешно открыт, затем вызовитеread()
Метод может прочитать все содержимое файла за один раз, Python считывает содержимое в память, используяstr
Представление объекта:
>>> f.read()
перечислитьread()
Он будет читать все содержимое файла за один раз.Если файл имеет 10G, память взорвется.Поэтому, чтобы быть в безопасности, вы можете вызывать его несколько раз.read(size)
метод, который считывает не более байтов размера за раз. Кроме того, звонитеreadline()
Чтобы читать по одной строке за раз, вызовитеreadlines()
Читать все сразу и возвращать построчноlist
. Поэтому необходимо решить, как звонить в соответствии с потребностями.
Если файл маленький,read()
Одноразовое чтение наиболее удобно, если невозможно определить размер файла, вызовите его повторноread(size)
Сравните страхование; если это файл конфигурации, вызовитеreadlines()
Наиболее удобно:
for line in f.readlines():
print(line.strip()) # 把末尾的'\n'删掉
file-like Object
рисунокopen()
Эта функция возвращаетread()
Объект метода, в совокупности именуемый файлоподобным объектом в Python. Помимо файла, это также может быть поток байтов памяти, сетевой поток, пользовательский поток и т. д. файлоподобный объект не требует наследования от определенного класса, достаточно написатьread()
метод подойдет.
StringIO
Это файлоподобный объект, созданный в памяти и часто используемый в качестве временного буфера.
записать файл
Запись файла аналогична чтению файла, разница только в вызовеopen()
При вызове функции передать идентификатор'w'
или'wb'
Указывает на запись текстового файла или запись двоичного файла:
f.write('Hello, world!')
закрыть файл
Последний шаг – позвонитьclose()
способ закрыть файл. Файл должен быть закрыт после использования, потому что файловый объект будет занимать ресурсы операционной системы, а количество файлов, которые операционная система может открыть одновременно, ограничено:
>>> f.close()
StringIO и BytesIO
Во многих случаях данные для чтения и записи не обязательно являются файлом, но также могут быть прочитаны и записаны в памяти.
StringIO
StringIO, как следует из названия, читает и записывает str в память.
Чтобы записать str в StringIO, нам нужно сначала создать StringIO, а затем записать его как файл:
>>> from io import StringIO
>>> f = StringIO()
>>> f.write('hello')
5
>>> f.write(' ')
1
>>> f.write('world!')
6
>>> print(f.getvalue())
hello world!
getvalue()
метод используется для получения написанного str.
Чтобы прочитать StringIO, инициализируйте StringIO с помощью str, а затем прочитайте его как файл:
>>> from io import StringIO
>>> f = StringIO('Hello!\nHi!\nGoodbye!')
>>> while True:
... s = f.readline()
... if s == '':
... break
... print(s.strip())
...
Hello!
Hi!
Goodbye!
BytesIO
StringIO может работать только с str.Если вы хотите работать с двоичными данными, вам нужно использовать BytesIO.
BytesIO реализует чтение и запись байтов в память, мы создаем BytesIO, а затем записываем несколько байтов:
>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'
Обратите внимание, что записываются не str, а байты в кодировке UTF-8.
Подобно StringIO, BytesIO можно инициализировать с помощью байтов, а затем читать как файл:
>>> from io import BytesIO
>>> f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
>>> f.read()
b'\xe4\xb8\xad\xe6\x96\x87'
Работа с файлами и каталогами
Если мы хотим работать с файлами и каталогами, мы можем вводить различные команды, предоставляемые операционной системой, в командной строке для завершения. Напримерdir
,cp
и так далее.
Что делать, если вы хотите выполнять операции с этими каталогами и файлами в программе Python? На самом деле команды, предоставляемые операционной системой, просто вызывают интерфейсные функции, предоставляемые операционной системой.os
Модули также могут напрямую вызывать интерфейсные функции, предоставляемые операционной системой.
Некоторые функции для работы с файлами и каталогами размещены вos
модуль, часть которого размещена вos.path
в модуле.
Узнайте, как использовать функции Python для фильтрации файлов. Например, если мы хотим вывести список всех каталогов в текущем каталоге, нам понадобится только одна строка кода:
>>> [x for x in os.listdir('.') if os.path.isdir(x)]
['.lein', '.local', '.m2', '.npm', '.ssh', '.Trash', '.vim', 'Applications', 'Desktop', ...]
перечислить все.py
файл и только одна строка кода:
>>> [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
['apis.py', 'config.py', 'models.py', 'pymonitor.py', 'test_db.py', 'urls.py', 'wsgiapp.py']
Сериализация
pickle
Процесс изменения переменных из памяти в хранимые или передаваемые называется сериализацией, которая называется травлением в Python, а также называется сериализацией, сортировкой, сведением и т. д. в других языках, что означает одно и то же.
После сериализации сериализованный контент можно записать на диск или передать на другие машины по сети.
И наоборот, повторное чтение содержимого переменных из сериализованного объекта в память называется десериализацией или распаковкой.
Python предоставляетpickle
модуль для реализации сериализации. Проблема с Pickle, как и со всеми другими проблемами сериализации, специфичными для языка программирования, заключается в том, что его можно использовать только с Python, и, возможно, разные версии Python несовместимы друг с другом, поэтому pickle можно использовать только для сохранения данных, которые не важно и не может быть успешно использовано.Десериализация не имеет значения.
JSON
Если мы хотим передавать объекты между разными языками программирования, мы должны сериализовать объекты в стандартный формат, такой как XML, но лучший способ — сериализовать в JSON, потому что JSON представлен в виде строки, которую могут использовать все языки. , Его также можно легко сохранить на диск или передать по сети. JSON — это не только стандартный формат, но и более быстрый, чем XML, и его можно читать прямо на веб-страницах, что очень удобно.
Встроенный Pythonjson
Модуль обеспечивает очень сложное преобразование объектов Python в формат JSON. Давайте сначала посмотрим, как превратить объект Python в JSON:
>>> import json
>>> d = dict(name='Bob', age=20, score=88)
>>> json.dumps(d)
'{"age": 20, "score": 88, "name": "Bob"}'
dumps()
метод возвращаетstr
, содержимое стандартное JSON. сродни,dump()
метод может напрямую записывать JSON вfile-like Object
.
Чтобы десериализовать JSON в объект Python, используйтеloads()
или соответствующийload()
метод, первый десериализует строку JSON, второй изfile-like Object
Прочитайте строку и десериализуйте ее в:
>>> json_str = '{"age": 20, "score": 88, "name": "Bob"}'
>>> json.loads(json_str)
{'age': 20, 'score': 88, 'name': 'Bob'}
Поскольку стандарт JSON указывает, что кодировка JSON — UTF-8, мы всегда можемstr
Преобразование в строки JSON и из них.