Обработка файлов с помощью модуля ОС
В дополнение к объекту File, возвращаемому open()функции, операции ввода-вывода файлов также могут выполняться с использованием встроенной библиотеки Python, имеющей модуль os, который предоставляет полезные функции, зависимые от операционной системы. Эти функции выполняют операции чтения / записи низкого уровня в файле.
В open()Функция из модуля os аналогична встроенной функции open (). Однако он возвращает не объект файла, а дескриптор файла, уникальное целое число, соответствующее открытому файлу. Значения 0, 1 и 2 дескриптора файла представляют потоки stdin, stdout и stderr. Остальным файлам будет присвоен инкрементный файловый дескриптор, начиная со 2-го.
Как и в случае с open() встроенная функция, os.open()функция также должна указать режим доступа к файлу. В следующей таблице перечислены различные режимы, определенные в модуле os.
Sr.No. | Модуль ОС и описание |
---|---|
1 | os.O_RDONLY Только для чтения |
2 | os.O_WRONLY Открыт только для записи |
3 | os.O_RDWR Открыт для чтения и письма |
4 | os.O_NONBLOCK Не блокировать при открытии |
5 | os.O_APPEND Добавлять при каждой записи |
6 | os.O_CREAT Создать файл, если он не существует |
7 | os.O_TRUNC Обрезать размер до 0 |
8 | os.O_EXCL Ошибка, если создание и файл существует |
Чтобы открыть новый файл для записи в него данных, укажите O_WRONLY так же как O_CREATрежимы, вставив оператор вертикальной черты (|). Функция os.open () возвращает дескриптор файла.
f=os.open("test.dat", os.O_WRONLY|os.O_CREAT)
Обратите внимание, что данные записываются в файл на диске в виде байтовой строки. Следовательно, обычная строка преобразуется в байтовую строку с помощью функции encode (), как и раньше.
data="Hello World".encode('utf-8')
Функция write () в модуле os принимает эту байтовую строку и файловый дескриптор.
os.write(f,data)
Не забудьте закрыть файл с помощью функции close ().
os.close(f)
Чтобы прочитать содержимое файла с помощью функции os.read (), используйте следующие операторы:
f=os.open("test.dat", os.O_RDONLY)
data=os.read(f,20)
print (data.decode('utf-8'))
Обратите внимание, что функции os.read () требуется дескриптор файла и количество байтов для чтения (длина байтовой строки).
Если вы хотите открыть файл для одновременных операций чтения / записи, используйте режим O_RDWR. В следующей таблице показаны важные функции, связанные с файловыми операциями в модуле ОС.
Старший Нет | Функции и описание |
---|---|
1 | os.close(fd) Закройте дескриптор файла. |
2 | os.open(file, flags[, mode]) Откройте файл и установите различные флаги в соответствии с флагами и, возможно, его режим в соответствии с режимом. |
3 | os.read(fd, n) Прочтите не более n байтов из файлового дескриптора fd. Вернуть строку, содержащую прочитанные байты. Если достигнут конец файла, на который указывает fd, возвращается пустая строка. |
4 | os.write(fd, str) Запишите строку str в файловый дескриптор fd. Возвращает количество фактически записанных байтов. |