Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Ввод-вывод файлов в Python: полное руководство по операциям I/O

Вывод на экран

Самый простой способ вывода — использование оператора print, куда можно передать ноль или более выражений, разделенных запятыми. Эта функция преобразует переданные выражения в строку и записывает результат в стандартный вывод:

#!/usr/bin/python
print("Python is really a great language,", "isn't it?")

Результат на экране:

Python is really a great language, isn't it?

Чтение ввода с клавиатуры

Python предоставляет две встроенные функции для чтения строки текста из стандартного ввода (по умолчанию — клавиатура):

Функция raw_input (Python 2)

Функция raw_input([prompt]) считывает одну строку из стандартного ввода и возвращает её как строку (удаляя завершающий символ новой строки).

#!/usr/bin/python
str = raw_input("Enter your input: ")
print("Received input is : ", str)

При вводе "Hello Python!" вывод будет:

Enter your input: Hello Python
Received input is : Hello Python

Функция input

Функция input([prompt]) эквивалентна raw_input, за исключением того, что она предполагает, что ввод — это валидное выражение Python, и возвращает вычисленный результат.

#!/usr/bin/python
str = input("Enter your input: ")
print("Received input is : ", str)

При вводе [x*5 for x in range(2,10,2)] результат:

Enter your input: [x*5 for x in range(2,10,2)]
Received input is : [10, 20, 30, 40]

Открытие и закрытие файлов

До сих пор мы работали со стандартным вводом и выводом. Теперь посмотрим, как работать с реальными файлами данных.

Python предоставляет базовые функции и методы для манипуляции файлами по умолчанию. Большинство операций с файлами выполняется с помощью объекта file.

Функция open()

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

Синтаксис

file_object = open(file_name[, access_mode][, buffering])

Параметры

Режимы открытия файла

№Режим и описание
1r — открытие только для чтения. Указатель в начале файла. Режим по умолчанию.
2rb — открытие только для чтения в бинарном формате.
3r+ — открытие для чтения и записи. Указатель в начале.
4rb+ — открытие для чтения и записи в бинарном формате.
5w — открытие только для записи. Перезаписывает файл, если существует. Создает новый, если нет.
6wb — то же в бинарном формате.
7w+ — открытие для чтения и записи. Перезаписывает или создает.
8wb+ — то же в бинарном формате.
9a — открытие для добавления. Указатель в конце файла. Создает новый, если нет.
10ab — добавление в бинарном формате.
11a+ — открытие для добавления и чтения.
12ab+ — добавление и чтение в бинарном формате.

Атрибуты объекта file

После открытия файла и получения объекта file можно получить различную информацию:

№Атрибут и описание
1file.closed — возвращает True, если файл закрыт, иначе False.
2file.mode — возвращает режим доступа, с которым файл был открыт.
3file.name — возвращает имя файла.
4file.softspace — возвращает False, если пробел нужен явно для print, иначе True.

Пример

#!/usr/bin/python
fo = open("foo.txt", "wb")
print("Name of the file: ", fo.name)
print("Closed or not : ", fo.closed)
print("Opening mode : ", fo.mode)
print("Softspace flag : ", fo.softspace)

Результат:

Name of the file: foo.txt
Closed or not : False
Opening mode : wb
Softspace flag : 0

Метод close()

Метод close() объекта file сбрасывает не записанную информацию и закрывает файл, после чего запись больше невозможна.

Python автоматически закрывает файл, когда ссылка на объект файла переназначается. Хорошей практикой является явный вызов close().

fileObject.close()

Пример

#!/usr/bin/python
fo = open("foo.txt", "wb")
print("Name of the file: ", fo.name)
fo.close()

Чтение и запись файлов

Объект file предоставляет набор методов доступа. Рассмотрим read() и write().

Метод write()

Метод write() записывает любую строку в открытый файл. Важно: строки Python могут содержать бинарные данные, а не только текст.

write() не добавляет символ новой строки ('\n') в конец строки.

fileObject.write(string)

Пример

#!/usr/bin/python
fo = open("foo.txt", "wb")
fo.write("Python is a great language.\nYeah its great!!\n")
fo.close()

Содержимое foo.txt:

Python is a great language.
Yeah its great!!

Метод read()

Метод read() читает строку из открытого файла. Строки Python могут содержать бинарные данные помимо текста.

fileObject.read([count])

Параметр — количество байт для чтения. Чтение начинается с начала файла. Если count опущен, читается максимум возможного (до конца файла).

Пример

#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is : ", str)
fo.close()

Результат:

Read String is : Python is

Позиционирование в файле

Метод tell() сообщает текущую позицию в файле (в байтах от начала).

Метод seek(offset[, from]) меняет текущую позицию. offset — количество байт для перемещения. from — опорная позиция: 0 — начало файла, 1 — текущая позиция, 2 — конец файла.

Пример

#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is : ", str)
position = fo.tell()
print("Current file position : ", position)
position = fo.seek(0, 0)
str = fo.read(10)
print("Again read String is : ", str)
fo.close()

Результат:

Read String is : Python is
Current file position : 10
Again read String is : Python is

Переименование и удаление файлов

Модуль os предоставляет методы для операций с файлами: переименование и удаление.

Для использования нужно импортировать модуль: import os.

Метод rename()

Принимает два аргумента: текущее имя файла и новое.

os.rename(current_file_name, new_file_name)

Пример

#!/usr/bin/python
import os
os.rename("test1.txt", "test2.txt")

Метод remove()

Удаляет файл по имени.

os.remove(file_name)

Пример

#!/usr/bin/python
import os
os.remove("test2.txt")

Работа с директориями

Все файлы содержатся в директориях. Модуль os имеет методы для создания, удаления и смены директорий.

Метод mkdir()

Создает директорию в текущей директории.

os.mkdir("newdir")

Пример

#!/usr/bin/python
import os
os.mkdir("test")

Метод chdir()

Меняет текущую директорию.

os.chdir("newdir")

Пример

#!/usr/bin/python
import os
os.chdir("/home/newdir")

Метод getcwd()

Возвращает текущую рабочую директорию.

os.getcwd()

Пример

#!/usr/bin/python
import os
os.getcwd()

Метод rmdir()

Удаляет директорию, переданную как аргумент. Перед удалением нужно очистить директорию.

os.rmdir('dirname')

Пример

#!/usr/bin/python
import os
os.rmdir("/tmp/test")

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

Три важных источника утилит для манипуляции файлами и директориями на Windows и Unix:

Python

  1. Ввод-вывод в C: scanf() и printf() — подробное руководство
  2. Работа с файлами в C: мастерство ввода-вывода с fopen, fprintf, fread и fseek
  3. Мастерство ввода-вывода и импорта модулей в Python: Практическое руководство
  4. Работа с файлами в Python: открытие, чтение, запись и управление
  5. Управление директориями и файлами в Python: полное руководство
  6. Проверка существования файлов и директорий в Python — практическое руководство
  7. Освоение ввода-вывода файлов в C: создание, открытие и управление файлами
  8. Заголовочные файлы в C: типы, подключение и лучшие практики
  9. Ввод-вывод в файлы в C++: чтение и запись с fstream
  10. Работа с файлами в C#: FileStream, StreamReader, StreamWriter и File API