Файлы. Курс «Python. Введение в программирование»
Большие объемы данных имеет смысл хранить не в списках или словарях, а в файлах. Поэтому в языках программирования предусмотрена возможность работы с файлами. В Python файлы рассматриваются как объекты файловых классов, то есть, например, текстовый файл – это тип данных наряду с типами списка, словаря, целого числа и др.
Обычно файлы делят на текстовые и байтовые (бинарные). Первые рассматриваются как содержащие символьные данные, строки. Вторые – как поток байтов. Побайтово считываются, например, файлы изображений.
Работа с бинарными файлами несколько сложнее. Нередко их обрабатывают с помощью специальных модулей Python (pickle, struct). В этом уроке будут рассмотрены базовые приемы чтения текстовых файлов и записи в них.
Функция open() – открытие файла
Открытие файла выполняется с помощью встроенной в Python функции open()
. Обычно ей передают один или два аргумента. Первый – имя файла или имя с адресом, если файл находится не в том каталоге, где находится скрипт. Второй аргумент – режим, в котором открывается файл.
Обычно используются режимы чтения ('r'
) и записи ('w'
). Если файл открыт в режиме чтения, то запись в него невозможна. Можно только считывать данные из него. Если файл открыт в режиме записи, то в него можно только записывать данные, считывать нельзя.
Если файл открывается в режиме 'w'
, то все данные, которые в нем были до этого, стираются. Файл становится пустым. Если не надо удалять существующие в файле данные, тогда следует использовать вместо режима записи, режим дозаписи ('a'
).
Если файл отсутствует, то открытие его в режиме 'w'
создаст новый файл. Бывают ситуации, когда надо гарантировано создать новый файл, избежав случайной перезаписи данных существующего. В этом случае вместо режима 'w'
используется режим 'x'
. В нем всегда создается новый файл для записи. Если указано имя существующего файла, то будет выброшено исключение. Потери данных в уже имеющемся файле не произойдет.
Если при вызове open()
второй аргумент не указан, то файл открывается в режиме чтения как текстовый файл. Чтобы открыть файл как байтовый, дополнительно к букве режима чтения/записи добавляется символ 'b'
. Буква 't'
обозначает текстовый файл. Поскольку это тип файла по умолчанию, то обычно ее не указывают.
Нельзя указывать только тип файла, то есть open("имя_файла", 'b')
есть ошибка, даже если файл открывается на чтение. Правильно – open("имя_файла", 'rb')
. Только текстовые файлы мы можем открыть командой open("имя_файла")
, потому что и 'r'
и 't'
подразумеваются по-умолчанию.
Функция open()
возвращает объект файлового типа. Его надо либо сразу связать с переменной, чтобы не потерять, либо сразу прочитать.
Чтение файла
С помощью файлового метода read()
можно прочитать файл целиком или только определенное количество байт. Пусть у нас имеется файл data.txt с таким содержимым:
one - 1 - I two - 2 - II three - 3 - III four - 4 - IV five - 5 - V
Откроем его и почитаем:
>>> f1 = open('data.txt') >>> f1.read(10) 'one - 1 - ' >>> f1.read() 'I\ntwo - 2 - II\nthree - 3 - III\n four - 4 - IV\nfive - 5 - V\n' >>> f1.read() '' >>> type(f1.read()) <class 'str'>
Сначала считываются первые десять байтов, которые равны десяти символам. Это не бинарный файл, но мы все равно можем читать по байтам. Последующий вызов read()
считывает весь оставшийся текст. После этого объект файлового типа f1 становится пустым.
Заметим, что метод read()
возвращает строку, и что конец строки считывается как '\n'
Для того, чтобы читать файл построчно существует метод readline()
:
>>> f1 = open('data.txt') >>> f1.readline() 'one - 1 - I\n' >>> f1.readline() 'two - 2 - II\n' >>> f1.readline() 'three - 3 — III\n'
Метод readlines()
считывает сразу все строки и создает список:
>>> f1 = open('data.txt') >>> f1.readlines() ['one - 1 - I\n', 'two - 2 - II\n', 'three - 3 - III\n', 'four - 4 - IV\n', 'five - 5 - V\n']
Объект файлового типа относится к итераторам. Из таких объектов происходит последовательное извлечение элементов. Поэтому считывать данные из них можно сразу в цикле без использования методов чтения:
>>> for i in open('data.txt'): ... print(i) ... one - 1 - I two - 2 - II three - 3 - III four - 4 - IV five - 5 - V >>>
Здесь при выводе наблюдаются лишние пустые строки. Функция
преобразует '\n'
в переход на новую строку. К этому добавляет свой переход на новую строку. Создадим список строк файла без '\n'
:
>>> nums = [] >>> for i in open('data.txt'): ... nums.append(i[:-1]) ... >>> nums ['one - 1 - I', 'two - 2 - II', 'three - 3 - III', 'four - 4 - IV', 'five - 5 - V']
Переменной i присваивается очередная строка файла. Мы берем ее срез от начала до последнего символа, не включая его. Следует иметь в виду, что '\n'
это один символ, а не два.
Запись в файл
Запись в файл выполняется с помощью методов write()
и writelines()
. Во второй можно передать структуру данных:
>>> l = ['tree', 'four'] >>> f2 = open('newdata.txt', 'w') >>> f2.write('one') 3 >>> f2.write(' two') 4 >>> f2.writelines(l)
Метод write()
возвращает количество записанных символов.
Закрытие файла
После того как работа с файлом закончена, важно не забывать его закрыть, чтобы освободить место в памяти. Делается это с помощью файлового метода close()
. Свойство файлового объекта closed позволяет проверить закрыт ли файл.
>>> f1.close() >>> f1.closed True >>> f2.closed False
Если файл открывается в заголовке цикла (for i in open('fname')
), то видимо интерпретатор его закрывает при завершении работы цикла или через какое-то время.
Практическая работа
Создайте файл data.txt по образцу урока. Напишите программу, которая открывает этот файл на чтение, построчно считывает из него данные и записывает строки в другой файл (dataRu.txt), заменяя английские числительные русскими, которые содержатся в списке (
["один", "два", "три", "четыре", "пять"]
), определенном до открытия файлов.Создайте файл nums.txt, содержащий несколько чисел, записанных через пробел. Напишите программу, которая подсчитывает и выводит на экран общую сумму чисел, хранящихся в этом файле.
Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса
Python | Работа с файлами
Открытие и закрытие файлов
Последнее обновление: 29.04.2017
Python поддерживает множество различных типов файлов, но условно их можно разделить на два виде: текстовые и бинарные. Текстовые файлы — это к примеру файлы с расширением cvs, txt, html, в общем любые файлы, которые сохраняют информацию в текстовом виде. Бинарные файлы — это изображения, аудио и видеофайлы и т.д. В зависимости от типа файла работа с ним может немного отличаться.
При работе с файлами необходимо соблюдать некоторую последовательность операций:
Открытие файла с помощью метода open()
Чтение файла с помощью метода read() или запись в файл посредством метода write()
Закрытие файла методом close()
Открытие и закрытие файла
Чтобы начать работу с файлом, его надо открыть с помощью функции open(), которая имеет следующее формальное определение:
open(file, mode)
Первый параметр функции представляет путь к файлу. Путь файла может быть абсолютным, то есть начинаться с буквы диска, например, C://somedir/somefile.txt. Либо можно быть относительным, например, somedir/somefile.txt — в этом случае поиск файла будет идти относительно расположения запущенного скрипта Python.
Второй передаваемый аргумент — mode
устанавливает режим открытия файла в зависимости от того, что мы собираемся с ним делать.
Существует 4 общих режима:
r (Read). Файл открывается для чтения. Если файл не найден, то генерируется исключение FileNotFoundError
w (Write). Файл открывается для записи. Если файл отсутствует, то он создается. Если подобный файл уже есть, то он создается заново, и соответственно старые данные в нем стираются.
a (Append). Файл открывается для дозаписи. Если файл отсутствует, то он создается. Если подобный файл уже есть, то данные записываются в его конец.
b (Binary). Используется для работы с бинарными файлами. Применяется вместе с другими режимами — w или r.
После завершения работы с файлом его обязательно нужно закрыть методом close()
. Данный метод освободит все связанные с файлом используемые ресурсы.
Например, откроем для записи текстовый файл «hello.txt»:
myfile = open("hello.txt", "w") myfile.close()
При открытии файла или в процессе работы с ним мы можем столкнуться с различными исключениями, например, к нему нет доступа и т.д. В этом случае программа выпадет в ошибку, а ее выполнение не дойдет до вызова метода close, и соответственно файл не будет закрыт.
В этом случае мы можем обрабатывать исключения:
try: somefile = open("hello.txt", "w") try: somefile.write("hello world") except Exception as e: print(e) finally: somefile.close() except Exception as ex: print(ex)
В данном случае вся работа с файлом идет во вложенном блоке try. И если вдруг возникнет какое-либо исключение, то в любом случае в блоке finally файл будет закрыт.
Однако есть и более удобная конструкция — конструкция with:
with open(file, mode) as file_obj: инструкции
Эта конструкция определяет для открытого файла переменную file_obj и выполняет набор инструкций. После их выполнения файл автоматически закрывается. Даже если при выполнении инструкций в блоке with возникнут какие-либо исключения, то файл все равно закрывается.
Так, перепишем предыдущий пример:
with open("hello.txt", "w") as somefile: somefile.write("hello world")
Изучаем Python: работа с файлами
В этой статье мы рассмотрим операции с файлами в Python. Открытие файла Python. Чтение из файла Python. Запись в файл Python, закрытие файла. А также методы, предназначенные для работы с файлами.
Файл – это именованная область диска, предназначенная для длительного хранения данных в постоянной памяти (например, на жёстком диске).
Чтобы прочитать или записать данные в файл, сначала нужно его открыть. После окончания работы файл необходимо закрыть, чтобы освободить связанные с ним ресурсы.
Поэтому в Python операции с файлами выполняются в следующем порядке:
- Открытие файла Python.
- Чтение из файла Python или запись в файл Python (выполнение операции).
- Закрытие файла Python.
Не знаете как открыть файл в питоне? В Python есть встроенная функция open(), предназначенная для открытия файла. Она возвращает объект, который используется для чтения или изменения файла.
>>> f = open("test.txt") # открыть файл в текущей папке >>> f = open("C:/Python33/README.txt") # указание полного пути
При этом можно указать необходимый режим открытия файла: ‘r’- для чтения,’w’ — для записи,’a’ — для изменения. Мы также можем указать, хотим ли открыть файл в текстовом или в бинарном формате.
По умолчанию файл открывается для чтения в текстовом режиме. При чтении файла в этом режиме мы получаем строки.
В бинарном формате мы получим байты. Этот режим используется для чтения не текстовых файлов, таких как изображения или exe-файлы.
Открытие файла Python- возможные режимы | |
Режим | Описание |
‘r’ | Открытие файла для чтения. Режим используется по умолчанию. |
‘w’ | Открытие файла для записи. Режим создаёт новый файл, если он не существует, или стирает содержимое существующего. |
‘x’ | Открытие файла для записи. Если файл существует, операция заканчивается неудачей (исключением). |
‘a’ | Открытие файла для добавления данных в конец файла без очистки его содержимого. Этот режим создаёт новый файл, если он не существует. |
‘t’ | Открытие файла в текстовом формате. Этот режим используется по умолчанию. |
‘b’ | Открытие файла в бинарном формате. |
‘+’ | Открытие файла для обновления (чтения и записи). |
f = open("test.txt") # эквивалент 'r' или 'rt' f = open("test.txt",'w') # запись в текстовом режиме f = open("img.bmp",'r+b') # чтение и запись в бинарном формате
В отличие от других языков программирования, в Python символ ‘a’ не подразумевает число 97, если оно не закодировано в ASCII (или другой эквивалентной кодировке).
Кодировка по умолчанию зависит от платформы. В Windows – это ‘cp1252’, а в Linux ‘utf-8’.
Поэтому мы не должны полагаться на кодировку по умолчанию. При работе с файлами в текстовом формате рекомендуется указывать тип кодировки.
f = open("test.txt",mode = 'r',encoding = 'utf-8')
Закрытие освободит ресурсы, которые были связаны с файлом. Это делается с помощью метода close(), встроенного в язык программирования Python.
В Python есть сборщик мусора, предназначенный для очистки ненужных объектов, Но нельзя полагаться на него при закрытии файлов.
f = open("test.txt",encoding = 'utf-8') # выполнение операций с файлом f.close()
Этот метод не полностью безопасен. Если при операции возникает исключение, выполнение будет прервано без закрытия файла.
Более безопасный способ – использование блока try…finally.
try: f = open("test.txt",encoding = 'utf-8') # выполнение операций с файлом finally: f.close()
Это гарантирует правильное закрытие файла даже после возникновения исключения, прерывающего выполнения программы.
Также для закрытия файла можно использовать конструкцию with. Оно гарантирует, что файл будет закрыт при выходе из блока with. При этом не нужно явно вызывать метод close(). Это будет сделано автоматически.
with open("test.txt",encoding = 'utf-8') as f: # выполнение операций с файлом
Чтобы записать данные в файл в Python, нужно открыть его в режиме ‘w’, ‘a’ или ‘x’. Но будьте осторожны с режимом ‘w’. Он перезаписывает файл, если то уже существует. Все данные в этом случае стираются.
Запись строки или последовательности байтов (для бинарных файлов) осуществляется методом write(). Он возвращает количество символов, записанных в файл.
with open("test.txt",'w',encoding = 'utf-8') as f: f.write("my first filen") f.write("This filenn") f.write("contains three linesn")
Эта программа создаст новый файл ‘test.txt’. Если он существует, данные файла будут перезаписаны. При этом нужно добавлять символы новой строки самостоятельно, чтобы разделять строки.
Чтобы осуществить чтение из файла Python, нужно открыть его в режиме чтения. Для этого можно использовать метод read(size), чтобы прочитать из файла данные в количестве, указанном в параметре size. Если параметр size не указан, метод читает и возвращает данные до конца файла.
>>> f = open("test.txt",'r',encoding = 'utf-8') >>> f.read(4) # чтение первых 4 символов 'This' >>> f.read(4) # чтение следующих 4 символов ' is ' >>> f.read() # чтение остальных данных до конца файла 'my first filenThis filencontains three linesn' >>> f.read() # дальнейшие попытки чтения возвращают пустую строку ''
Метод read() возвращает новые строки как ‘n’. Когда будет достигнут конец файла, при дальнейших попытках чтения мы получим пустые строки.
Чтобы изменить позицию курсора в текущем файле, используется метод seek(). Метод tell() возвращает текущую позицию курсора (в виде количества байтов).
>>> f.tell() # получаем текущую позицию курсора в файле 56 >>> f.seek(0) # возвращаем курсор в начальную позицию 0 >>> print(f.read()) # читаем весь файл This is my first file This file contains three lines
Мы можем прочитать файл построчно в цикле for.
>>> for line in f: ... print(line, end = '') ... This is my first file This file contains three lines
Извлекаемые из файла строки включают в себя символ новой строки ‘n’. Чтобы избежать вывода, используем пустой параметр end метода print(),.
Также можно использовать метод readline(), чтобы извлекать отдельные строки. Он читает файл до символа новой строки.
>>> f.readline() 'This is my first filen' >>> f.readline() 'This filen' >>> f.readline() 'contains three linesn' >>> f.readline() ''
Метод readlines() возвращает список оставшихся строк. Все эти методы чтения возвращают пустую строку, когда достигается конец файла.
>>> f.readlines() ['This is my first filen', 'This filen', 'contains three linesn']
Ниже приводится полный список методов для работы с файлами в текстовом режиме.
Python работа с файлами — методы | |
Метод | Описание |
close() | Закрытие файла. Не делает ничего, если файл закрыт. |
detach() | Отделяет бинарный буфер от TextIOBase и возвращает его. |
fileno() | Возвращает целочисленный дескриптор файла. |
flush() | Вызывает сброс данных (запись на диск) из буфера записи файлового потока. |
isatty() | Возвращает значение True, если файловый поток интерактивный. |
read(n) | Читает максимум n символов из файла. Читает до конца файла, если значение отрицательное или None. |
readable() | Возвращает значение True, если из файлового потока можно осуществить чтение. |
readline(n=-1) | Читает и возвращает одну строку из файла. Читает максимум n байт, если указано соответствующее значение. |
readlines(n=-1) | Читает и возвращает список строк из файла. Читает максимум n байт/символов, если указано соответствующее значение. |
seek(offset,from=SEEK_SET) | Изменяет позицию курсора. |
seekable() | Возвращает значение True, если файловый поток поддерживает случайный доступ. |
tell() | Возвращает текущую позицию курсора в файле. |
truncate(size=None) | Изменяет размер файлового потока до size байт. Если значение size не указано, размер изменяется до текущего положения курсора. |
writable() | Возвращает значение True, если в файловый поток может производиться запись. |
write(s) | Записывает строки s в файл и возвращает количество записанных символов. |
writelines(lines) | Записывает список строк lines в файл. |
Данная публикация является переводом статьи «Python File IO Read and Write Files in Python» , подготовленная редакцией проекта.
Введение в Python. Часть 11. Работа с файлами
Этот выпуск – о работе с файлами в Python. Научимся открывать, создавать и изменять файлы с текстовой и табличной информацией. Тетрадка Jupyter Notebook этого урока доступна на нашем GitHub.
Видео: Глеб Лиманский
Открываем файл и читаем из него данные
Самый простой формат, в котором могут храниться текстовые данные, – txt. Для примера я создала на компьютере файл с текстом Конституции, в которую для тренировки мы внесем собственные поправки, как это сделал президент России в 2020 году. Прежде, чем работать с файлом, надо его открыть. Это делается с помощью встроенной функции open. В скобках мы сперва прописываем путь к файлу, а затем режим, в котором хотим открыть файл – в данном случае мы открываем файл для чтения, за это отвечает режим «r» (от слова read).
Открыли файл, теперь надо прочитать информацию из него. Для этого есть несколько способов. Самый простой – это вывести всю информацию из файла целиком. За это отвечает операция read.
В полученном тексте отобразились и служебные символы – например, переносы строк. Чтобы увидеть текст без этих символов, присвоим содержимое файла имени data и распечатаем его.
Распечатать информацию построчно можно с помощью цикла и без использования read.
После того, как мы закончили операции с файлом, необходимо его закрыть. Закрывать файлы после работы важно, чтобы не тратить ресурсы памяти и чтобы данные из файла не потерялись. Делается это с помощью операции close. После этого операции с файлом выполняться не будут, вместо этого мы увидим ошибку.
Чтобы не прописывать операцию закрытия файла каждый раз, вместо этого можно использовать специальную конструкцию with as, тогда файл будет закрыт автоматически.
Вернемся к операции read. Если мы узнаем тип полученных данных, окажется, что это строка, в которую помещен весь текст из файла. Но есть и другие режимы чтения. Операция readline выводит на экран по одной строке из файла. Сперва это будет первая строка, а если ниже мы повторим эту операцию, то вторая и так далее.
Чтобы получить список из строк, используют операцию readlines.
Внутри всех этих операций можно указывать количество символов, которые мы хотим прочитать из файла. Например, read(11) прочитает первые 11 символов.
Создаем файл и записываем в него данные
Для того, чтобы создать файл, доступный для внесения данных, мы прописываем ту же операцию открытия, но с режимом «w» (от слова write). Если файл с таким именем, которое мы указали, отсутствует на компьютере, то он создается. Если подобный файл уже есть, то он перезаписывается, и соответственно старые данные в нем стираются. Поэтому важно указать файлу имя, которое еще не используется. Чтобы поместить данные в файл, надо использовать операцию write. Давайте запишем туда текст из предыдущего файла, который хранится у нас под именем data.
Еще один режим, который можно указать – «a» (от слова append) – это открытие на добавление данных. В таком случае данные добавятся в конец существующего файла. Давайте добавим в текст Конституции еще одну статью.
С помощью операции write мы записали в файл информацию из строки. Чтобы записать информацию из какой-либо последовательности, например, списка, используют writelines. Давайте запишем в Конституцию еще несколько статей.
Если мы снова прочитаем файл, мы увидим, что строки из списка записываются без разделителей. Чтобы они появились, нам надо записать их самостоятельно. Сделать это можно, прибавив к каждому элементу списка символ, который в Python означает перенос строки.
Работаем с csv-файлами
Открытые данные, с которыми работают журналисты, часто представлены в формате csv – от слов comma separated values, то есть значения, разделенные запятыми. Это текстовый формат для представления табличных данных. Для примера зайдем на сайт Минобрнауки и скачаем данные о численности студентов по направлениям подготовки. Для упрощенной работы с файлами csv в Питоне есть специальный встроенный модуль csv. Давайте импортируем его.
Для чтения используется функция reader. Откроем файл, создадим объект reader и попросим распечатать содержимое файла построчно.
Мы получим ошибку, которая сигнализирует нам о том, что у данных из файла, который мы пытаемся открыть, какая-то нестандартная кодировка – такая проблема встречается довольно часто. Чтобы открыть такой файл, надо прописать кодировку в параметре encoding – узнать ее можно с помощью специального модуля chardet.
Из результата мы копируем полученную кодировку и вставляем ее в код в параметре encoding.
Но мы все равно получили не то, что нам нужно. Оказалось, что в этом файле значения разделены не запятыми, а точкой с запятой. Чтобы правильно прочитать этот файл, мы можем указать разделитель в параметре delimiter.
Этот код выдаст нам списки со значениями из ячеек каждой строки таблицы. Но удобнее извлекать данные из csv-файла не в списки, а в словарь. Делается это с помощью операции DictWriter.
C помощью операции fieldnames мы сможем узнать названия столбцов в наших данных.
С помощью циклов в словарях удобнее искать нужное нам значение. Например, давайте узнаем, сколько студентов в 2019 году изучали военную журналистику.
Давайте создадим собственный файл csv и перезапишем в него те же данные про студентов, но уже в стандартной кодировке и со значениями, разделенными запятыми. В качестве заголовков столбцов укажем список, извлеченный из старого файла. Пропишем заголовки с помощью writeheader.
И наконец, записываем старые данные из словаря в новый файл с помощью writerows.
Как открыть и закрыть файл в Python
Python имеет встроенную функцию open(), чтобы открыть файл, он возвращает что-то, называемое файловым объектом. Файловый объект содержит методы и атрибуты, которые могут использоваться для сбора информации о файле, который вы открыли. Они также могут использоваться для управления указанным файлом.
Как открыть файл в Python
my_file = open(filename, filemode)
my_file = open(filename, filemode) |
Здесь filename — это строковый аргумент, который указывает имя файла вместе с его путем, а filemode также является строковым аргументом, который используется для указания способа использования файла, то есть для чтения или записи. И my_file — это объект обработчика файлов, также известный как указатель на файл.
Пример:
my_file = open(«my_file.txt», «r») # Open a file print («Name of the file: «, my_file.name) print («Opening mode : «, my_file.mode)
my_file = open(«my_file.txt», «r») # Open a file print («Name of the file: «, my_file.name) print («Opening mode : «, my_file.mode) |
Вывод:
Name of the file: my_file.txt Opening mode : r
Name of the file: my_file.txt Opening mode : r |
В приведенном выше примере откройте текстовый файл с именем «my_file.txt» в режиме только чтения.
Как закрыть файл в Python
Когда вы закончите с файлом, используйте close(), чтобы закрыть его и освободить ресурсы, привязанные к файлу, и выполняются с использованием метода Python close().
Пример:
my_file = open(«my_file.txt», «r») # Open a file # do file operations. my_file.close()
my_file = open(«my_file.txt», «r») # Open a file # do file operations. my_file.close() |
Важно отметить, что всегда убедитесь, что вы явно закрываете каждый открытый файл, как только его работа завершена, и у вас нет причин держать ее открытой. Потому что существует верхний предел количества файлов, которые программа может открыть. Если вы превысите этот предел, надежного способа восстановления нет, поэтому программа может потерпеть крах.
Метод close() не совсем безопасен. Если возникает исключение, когда мы выполняем некоторую операцию с файлом, код выходит из него, не закрывая файл. Лучше использовать try … finally block.
Пример:
try: my_file = open(«my_file.txt», «r») # Open a file # do some file operations. finally: my_file.close()
try: my_file = open(«my_file.txt», «r») # Open a file # do some file operations. finally: my_file.close() |
В приведенном выше примере гарантируется, что файл будет правильно закрыт, даже если возникает исключение, что приведет к остановке потока программы.
Использование оператора «with» является самым безопасным способом обработки файловой операции в Python, потому что оператор «with» гарантирует, что файл будет закрыт при выходе изнутри внутри блока.
Пример:
with open(«my_file.txt», «r») as my_file: # do some file operations
with open(«my_file.txt», «r») as my_file: # do some file operations |
В приведенном выше примере вам не нужно явно вызывать метод close(). Это делается внутренне.
Переименование и удаление файлов в Python
Модуль ОС в Python обеспечивает способ использования функциональных возможностей, зависящих от операционной системы. Модуль ОС поставляется под стандартными служебными модулями Python. Чтобы использовать этот модуль, вам необходимо сначала его импортировать, а затем вы можете вызвать любые связанные функции.
Переименование файла в Python
os.rename (old_file_name, new_file_name)
os.rename (old_file_name, new_file_name) |
Пример:
import os cur_file = «file1.txt» new_file = «file2.txt» os.rename(cur_file, new_file)
import os cur_file = «file1.txt» new_file = «file2.txt» os.rename(cur_file, new_file) |
Удаление файла в Python
Пример:
import os cur_file = «file1.txt» os.remove(cur_file)
import os cur_file = «file1.txt» os.remove(cur_file) |
Источник: net-informations.com
Функция open() в Python, открывает файл на чтение/запись.
Открывает файл для чтения или записи файлового потока.
Синтаксис:fp = open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)Параметры:
file
— абсолютное или относительное значение пути к файлу или файловый дескриптор открываемого файла.mode
— необязательно, строка, которая указывает режим, в котором открывается файл. По умолчанию'r'
.buffering
— необязательно, целое число, используемое для установки политики буферизации.encoding
— необязательно, кодировка, используемая для декодирования или кодирования файла.errors
— необязательно, строка, которая указывает, как должны обрабатываться ошибки кодирования и декодирования. Не используется в -бинарном режимеnewline
— необязательно, режим перевода строк. Варианты:None
,'\n'
,'\r'
и'\r\n'
. Следует использовать только для текстовых файлов.closefd
— необязательно,bool
, флаг закрытия файлового дескриптора.opener
— необязательно, пользовательский объект, возвращающий открытый дескриптор файла.
Функция open()
открывает файл для чтения или записи при помощи файлового потока. Если файл не может быть открыт, бросается исключение OSError
.
Функция возвращает файловый объект, который имеет методы, позволяющие читать и записывать информацию различными способами.
Аргумент file
— это строка, определяющая абсолютное или относительное расположение открываемого файла в файловой системе или целочисленный файловый дескриптор файла. Если задан файловый дескриптор, он закрывается, когда возвращаемый файловый поток закрывается, если для closefd
не установлено значение False
.
Аргумент mode
— это необязательная строка, которая указывает режим, в котором открывается файл. По умолчанию 'r'
, это означает, что файл открыт для чтения в текстовом режиме.
Значения аргумента mode
:
r
— открывает файл только для чтения,w
— открыт для записи (перед записью файл будет очищен),x
— эксклюзивное создание, бросается исключениеFileExistsError
, если файл уже существует.a
— открыт для добавления в конец файла (на некоторых Unix-системах пишет в конец файла вне зависимости от позиции курсора)+
— символ обновления (чтение + запись).t
— символ текстового режима.b
— символ двоичного режима (для операционных систем, которые различают текстовые и двоичные файлы).
Режим по умолчанию 'r'
, открывает файл только для чтения текста, синоним 'rt'
. Режимы 'r+'
и 'r+b'
открывают файл и устанавливают курсор на начало файла, запись в файл начинается с места остановки курсора при его чтении перед записью. Если файл перед записью не читался то запись осуществляется в начало файла. Режимы 'w'
и 'wb'
создают новый файл или открывают существующий файл только для записи, с последующей его очисткой (стирает все перед записью). У режимов 'w+'
и 'wb+'
поведение такое же как в предыдущем случае, только если не закрывать файл после записи, его еще можно потом прочитать.
Варианты использования режимов:
'r'
— Открывает файл только для чтения. Указатель файла помещается в начале файла. Это режим «по умолчанию».'rb'
— Открывает файл в бинарном режиме только для чтения. Указатель файла помещается в начале файла. Это режим «по умолчанию».'r+'
— Открывает файл для чтения и записи. Указатель файла помещается в начало файла.'rb+'
— Открывает файл в бинарном режиме для чтения и записи. Указатель файла помещается в начале файла. Это режим «по умолчанию».'w'
— Открывает файл только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создает новый файл для записи.'wb'
— Открывает файл в бинарном режиме только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создает новый файл для записи.'w+'
— Открывает файл для записи и чтения. Перезаписывает существующий файл, если файл существует. Если файл не существует, создается новый файл для чтения и записи.'wb+'
— Открывает файл в бинарном режиме для записи и чтения. Перезаписывает существующий файл, если файл существует. Если файл не существует, создается новый файл для чтения и записи.'a'
— Открывает файл для добавления. Указатель файла находится в конце файла, если файл существует. То есть файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи.'ab'
— Открывает файл в бинарном режиме для добавления. Указатель файла находится в конце файла, если файл существует. То есть файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи.'a+'
— Открывает файл для добавления и чтения. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи.'ab+'
— Открывает файл в бинарном режиме для добавления и чтения. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи.
Python различает двоичный и текстовый ввод/вывод. Файлы, открытые в двоичном режиме, возвращают содержимое в виде bytes
объектов без какого-либо декодирования. В текстовом режиме (по умолчанию или когда 't'
включен в аргумент mode
) содержимое файла возвращается как строка байтов, которые были сначала декодированы с использованием кодировки, используемой системой по умолчанию или с использованием переданного аргумента encoding
.
Аргумент buffering
— необязательное целое число, используемое для установки политики буферизации.
0
— отключить буферизацию, только для бинарного режима;1
— построчная буферизация, только для текстового режима;int
число > 1 — размер буфера в байтах.-1
— по умолчанию.
У текстовых файлов, если buffering
не задан, используется построчная буферизаця. Двоичные файлы буферизируются кусками фиксированного размера. Этот размер определяется эвристикой, пытающейся определить размер блока устройства, на котором находится файл, в случае неудачи использует io.DEFAULT_BUFFER_SIZE
. Для многих систем буфер равен 4096
или 8192
байт.
Аргумент encoding
— это имя кодировки, используемой для декодирования или кодирования файла. Это аргумент следует использовать только в текстовом режиме. Кодировка по умолчанию зависит от платформы, но может использоваться любая кодировка текста, поддерживаемая Python.
Аргумент error
является необязательным и указывает как должны обрабатываться ошибки кодирования и декодирования. Следует использовать только для текстовых файлов.
Доступны стандартные обработчики ошибок:
'strict'
— бросает исключениеValueError
, если есть ошибка кодирования. Значение по умолчаниюNone
имеет тот же эффект.'ignore'
— игнорирует ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.'replace'
— вставляет символ?
на место непрочитанных символов, ввиду их отсутствия в используемой кодировке.'surrogateescape'
— любые некорректные байты будут представлены как символы Юникода в диапазоне отU+DC80
доU+DCFF
. Эти символы, при обратной операции кодирования будут возвращаться в те же байты. Полезно для обработки файлов в неизвестной кодировке.'xmlcharrefreplace'
— поддерживается только при записи в файл. Символы, не поддерживаемые кодировкой, заменяются соответствующей ссылкой на символ XML.'backslashreplace'
— заменяет искаженные данные на escape-последовательности Python с обратной косой чертой.'namereplace'
— поддерживается только при записи, заменяет не поддерживаемые символы на\N{...}
escape-последовательности.
Аргумент newline
контролирует работу режима новой строки. Работает только с текстовым режимом. Допустимые аргументы: None
, ''
, '\n'
, '\r'
и '\r\n'
.
Это работает следующим образом:
- Чтение файла:
- если аргумент
newline=None
или не указан, то символами окончания строк'\n'
,'\r'
или'\r\n'
на выходе преобразуются в разделитель строки'\n'
. - если
newline=''
, то получим результат с вырезанными символами окончания строк'\n'
,'\r'
или'\r\n'
, то есть файл прочитается как одна большая строка. - если
newline='\n'
, то в результате чтения функцияopen()
уберет только символ\n
из результата, еслиnewline='\r'
, то только\r
, еслиnewline='\r\n'
, то только сочетание'\r\n'
не будет учитываться.
- если аргумент
- При записи файла:
- если аргумент
newline=None
или не указан, то символы окончания строк\n
будут переведены в разделители строк, которые система использует по умолчанию; - если
newline=''
илиnewline='\n'
, то символы окончания строк\n
переводится в разделители строк не будут. В файл запишется одна большая строка. - если
newline='\r'
, то в результате записи функцияopen()
сохранит значение\r
в качестве разделителя строк, еслиnewline='\r\n'
, то запишется сочетание'\r\n'
.
- если аргумент
Аргумент closefd
по умолчанию True
. Если аргумент closefd=False
и вместо имени файла был задан его дескриптор, то при закрытии файла функцией open()
, базовый дескриптор файла будет оставаться открытым. Если задано имя файла, closefd должно быть True
(по умолчанию), иначе возникнет ошибка.
Необязательный аргумент opener
(по умолчанию None
), пользовательский объект поддерживающий вызов, который следует использовать для открытия файла. Этот объект получая на входе file
и flags
, должен возвращать открытый дескриптор файла.
Дополнительно смотрите функцию os.open()
, которая открывает файл и возвращает его файловый дескриптор. Вновь созданный дескриптор не наследуется .
В следующем примере используется параметр dir_fd
функции os.open()
, чтобы открыть файл относительно данного каталога:
>>> import os >>> dir_fd = os.open('/some/dir', os.O_RDONLY) >>> def opener(path, flags): ... return os.open(path, flags, dir_fd=dir_fd) ... >>> with open('test.txt', 'w', opener=opener) as f: ... print('This will be written to /some/dir/test.txt', file=f) ... >>> os.close(dir_fd) # не забывайте закрыть файловый дескриптор
Тип файлового объекта, возвращаемого функцией open()
, зависит от режима. Когда используется open()
, чтобы открыть файл в текстовом режиме 'w'
, 'r'
, 'wt'
, 'rt'
и т. д., она возвращает подкласс io.TextIOBase
, в частности io.TextIOWrapper
. При использовании для открытия файла в двоичном режиме с буферизацией возвращаемый класс является подклассом io.BufferedIOBase
.
Итоговый класс меняется в зависимости от операции:
- в режиме чтения двоичных файлов он возвращает
io.BufferedReader
; - в двоичном режиме записи и в двоичном режиме добавления он возвращает
io.BufferedWriter
; - в режиме чтения/записи —
io.BufferedRandom
.
Когда отключена буферизация, исходный поток возвращает подклассы io.RawIOBase
, io.FileIO
.
Чтение и вывод на печать стазу всего файла
f = open('demofile.txt', 'r') print(f.read()) f.close() # не забывайте закрыть файл
Чтение всего файла и вывод на печать построчно
f = open('demofile.txt', 'r') for line in f: print(line) f.close() # не забывайте закрыть файл
Создадим файл newfile.txt и запишем в него строку. Если файл с таким именем уже существует, то данные внутри файла сотрутся.
f = open('newfile.txt', 'w') f.write('Это единственная строка в файле\n') f.close() # не забывайте закрыть файл
Открываем файл на запись с помощью менеджера контекста и пишем данные в конец файла.
with open('demofile.txt', 'a') as f: f.write('Привет Мир\n') # здесь закрывать файл не надо, менеджер контекста сделает это за вас.
Python 3: файлы — чтение и запись: open, read, write, seek, readline, dump, load, pickle
На этом занятии мы поговорим, как в Python можно считывать информацию из файлов и записывать ее в файлы. Что такое файлы и зачем они нужны, думаю объяснять не надо, т.к. если вы дошли до этого занятия, значит, проблем с пониманием таких базовых вещей у вас нет. Поэтому сразу перейдем к функции
open(file [, mode=’r’, encoding=None, …])
через которую и осуществляется работа с файлами. Здесь
- file – это путь к файлу вместе с его именем;
- mode – режим доступа к файлу;
- encoding – кодировка файла.
Для начала определимся с понятием «путь к файлу». Представим, что наш файл ex1.py находится в каталоге app:
Тогда, чтобы обратиться к файлу my_file.txt путь можно записать так:
«my_file.txt»
или
«d:\\app\\my_file.txt»
или так:
«d:/app/my_file.txt»
Последние два варианта представляют собой абсолютный путь к файлу, то есть, полный путь, начиная с указания диска. Причем, обычно используют обратный слеш в качестве разделителя: так короче писать и такой путь будет корректно восприниматься как под ОС Windows, так и Linux. Первый же вариант – это относительный путь, относительно рабочего каталога.
Теперь, предположим, мы хотим обратиться к файлу img.txt. Это можно сделать так:
«images/img.txt»
или так:
«d:/app/images/img.txt»
Для доступа к out.txt пути будут записаны так:
«../out.txt»
«d:/out.txt»
Обратите внимание, здесь две точки означают переход к родительскому каталогу, то есть, выход из каталога app на один уровень вверх.
И, наконец, для доступа к файлу prt.dat пути запишутся так:
«../parent/prt.dat»
«d:/ parent/prt.dat»
Вот так следует прописывать пути к файлам. В нашем случае мы имеем текстовый файл «myfile.txt», который находится в том же каталоге, что и программа ex1.py, поэтому путь можно записать просто указав имя файла:
file = open("myfile.txt")
В результате переменная file будет ссылаться на файловый объект, через который и происходит работа с файлами. Если указать неверный путь, например, так:
file = open("myfile2.txt")
то возникнет ошибка FileNotFoundError. Это стандартное исключение и как их обрабатывать мы с вами говорили на предыдущем занятии. Поэтому, запишем этот критический код в блоке try:
try: file = open("myfile2.txt") except FileNotFoundError: print("Невозможно открыть файл")
Изменим имя файла на верное и посмотрим, как далее можно с ним работать. По умолчанию функция open открывает файл в текстовом режиме на чтение. Это режим
mode = «r»
Если нам нужно поменять режим доступа к файлу, например, открыть его на запись, то это явно указывается вторым параметром функции open:
file = open("out.txt", "w")
В Python имеются следующие режимы доступа:
Название |
Описание |
‘r’ |
открытие на чтение (значение по умолчанию) |
‘w’ |
открытие на запись (содержимое файла удаляется, а если его нет, то создается новый) |
‘x’ |
открытие файла на запись, если его нет генерирует исключение |
‘a’ |
открытие на дозапись (информация добавляется в конец файла) |
Дополнения |
|
‘b’ |
открытие в бинарном режиме доступа к информации файла |
‘t’ |
открытие в текстовом режиме доступа (если явно не указывается, то используется по умолчанию) |
‘+’ |
открытие на чтение и запись одновременно |
Здесь мы имеем три основных режима доступа: на чтение, запись и добавление. И еще три возможных расширения этих режимов, например,
- ‘rt’ – чтение в текстовом режиме;
- ‘wb’ – запись в бинарном режиме;
- ‘a+’ – дозапись или чтение данных из файла.
Чтение информации из файла
В чем отличие текстового режима от бинарного мы поговорим позже, а сейчас откроем файл на чтение в текстовом режиме:
file = open("myfile.txt")
и прочитаем его содержимое с помощью метода read:
В результате, получим строку, в которой будет находиться прочитанное содержимое. Действительно, в этом файле находятся эти строчки из поэмы Пушкина А.С. «Медный всадник». И здесь есть один тонкий момент. Наш текстовый файл имеет кодировку Windows-1251 и эта кодировка используется по умолчанию в функции read. Но, если изменить кодировку файла, например, на популярную UTF-8, то после запуска программы увидим в консоли вот такую белиберду. Как это можно исправить, не меняя кодировки самого файла? Для этого следует воспользоваться именованным параметром encoding и записать метод open вот так:
file = open("myfile.txt", encoding="utf-8" )
Теперь все будет работать корректно. Далее, в методе read мы можем указать некий числовой аргумент, например,
Тогда из файла будут считаны первые два символа. И смотрите, если мы запишем два таких вызова подряд:
print( file.read(2) ) print( file.read(2) )
то увидим, что при следующем вызове метод read продолжил читать следующие два символа. Почему так произошло? Дело в том, что у файлового объекта, на который ссылается переменная file, имеется внутренний указатель позиции (file position), который показывает с какого места производить считывание информации.
Когда мы вызываем метод read(2) эта позиция автоматически сдвигается от начала файла на два символа, т.к. мы именно столько считываем. И при повторном вызове read(2) считывание продолжается, т.е. берутся следующие два символа. Соответственно, позиция файла сдвигается дальше. И так, пока не дойдем до конца.
Но мы в Python можем управлять этой файловой позицией с помощью метода
seek(offset[, from_what])
Например, вот такая запись:
будет означать, что мы устанавливаем позицию в начало и тогда такие строчки:
print( file.read(2) ) file.seek(0) print( file.read(2) )
будут считывать одни и те же первые символы. Если же мы хотим узнать текущую позицию в файле, то следует вызвать метод tell:
pos = file.tell() print( pos )
Следующий полезный метод – это readline позволяет построчно считывать информацию из текстового файла:
s = file.readline() print( s )
Здесь концом строки считается символ переноса ‘\n’, либо конец файла. Причем, этот символ переноса строки будет также присутствовать в строке. Мы в этом можем убедиться, вызвав дважды эту функцию:
print( file.readline() ) print( file.readline() )
Здесь в консоли строчки будут разделены пустой строкой. Это как раз из-за того, что один перенос идет из прочитанной строки, а второй добавляется самой функцией print. Поэтому, если их записать вот так:
print( file.readline(), end="" ) print( file.readline(), end="" )
то вывод будет построчным с одним переносом.
Если нам нужно последовательно прочитать все строчки из файла, то для этого обычно используют цикл for следующим образом:
for line in file: print( line, end="" )
Этот пример показывает, что объект файл является итерируемым и на каждой итерации возвращает очередную строку.
Или же, все строчки можно прочитать методом
и тогда переменная s будет ссылаться на упорядоченный список с этими строками:
Однако этот метод следует использовать с осторожностью, т.к. для больших файлов может возникнуть ошибка нехватки памяти для хранения полученного списка.
По сути это все методы для считывания информации из файла. И, смотрите, как только мы завершили работу с файлом, его следует закрыть. Для этого используется метод close:
Конечно, прописывая эту строчку, мы не увидим никакой разницы в работе программы. Но, во-первых, закрывая файл, мы освобождаем память, связанную с этим файлом и, во-вторых, у нас не будет проблем в потере данных при их записи в файл. А, вообще, лучше просто запомнить: после завершения работы с файлом, его нужно закрыть. Причем, организовать программу лучше так:
try: file = open("myfile.txt") try: s = file.readlines() print( s ) finally: file.close() except FileNotFoundError: print("Невозможно открыть файл")
Мы здесь создаем вложенный блок try, в который помещаем критический текст программы при работе с файлом и далее блок finally, который будет выполнен при любом стечении обстоятельств, а значит, файл гарантированно будет закрыт.
Или же, забегая немного вперед, отмечу, что часто для открытия файла пользуются так называемым менеджером контекста, когда файл открывают при помощи оператора with:
try: with open("myfile.txt", "r") as file: # file = open("myfile.txt") s = file.readlines() print( s ) except FileNotFoundError: print("Невозможно открыть файл")
При таком подходе файл закрывается автоматически после выполнения всех инструкций внутри этого менеджера. В этом можно убедиться, выведем в консоль флаг, сигнализирующий закрытие файла:
finally: print(file.closed)
Запустим программу, видите, все работает также и при этом файл автоматически закрывается. Даже если произойдет критическая ошибка, например, пропишем такую конструкцию:
то, как видим, файл все равно закрывается. Вот в этом удобство такого подхода при работе с файлами.
Запись информации в файл
Теперь давайте посмотрим, как происходит запись информации в файл. Во-первых, нам нужно открыть файл на запись, например, так:
file = open("out.txt", "w")
и далее вызвать метод write:
file.write("Hello World!")
В результате у нас будет создан файл out.txt со строкой «Hello World!». Причем, этот файл будет располагаться в том же каталоге, что и файл с текстом программы на Python.
Далее сделаем такую операцию: запишем метод write следующим образом:
И снова выполним эту программу. Смотрите, в нашем файле out.txt прежнее содержимое исчезло и появилось новое – строка «Hello». То есть, когда мы открываем файл на запись в режимах
w, wt, wb,
то прежнее содержимое файла удаляется. Вот этот момент следует всегда помнить.
Теперь посмотрим, что будет, если вызвать метод write несколько раз подряд:
file.write("Hello1") file.write("Hello2") file.write("Hello3")
Смотрите, у нас в файле появились эти строчки друг за другом. То есть, здесь как и со считыванием: объект file записывает информацию, начиная с текущей файловой позиции, и автоматически перемещает ее при выполнении метода write.
Если мы хотим записать эти строчки в файл каждую с новой строки, то в конце каждой пропишем символ переноса строки:
file.write("Hello1\n") file.write("Hello2\n") file.write("Hello3\n")
Далее, для дозаписи информации в файл, то есть, записи с сохранением предыдущего содержимого, файл следует открыть в режиме ‘a’:
file = open("out.txt", "a")
Тогда, выполняя эту программу, мы в файле увидим уже шесть строчек. И смотрите, в зависимости от режима доступа к файлу, мы должны использовать или методы для записи, или методы для чтения. Например, если вот здесь попытаться прочитать информацию с помощью метода read:
то возникнет ошибка доступа. Если же мы хотим и записывать и считывать информацию, то можно воспользоваться режимом a+:
file = open("out.txt", "a+")
Так как здесь файловый указатель стоит на последней позиции, то для считывания информации, поставим его в самое начало:
file.seek(0) print( file.read() )
А вот запись данных всегда осуществляется в конец файла.
Следующий полезный метод для записи информации – это writelines:
file.writelines(["Hello1\n", "Hello2\n"])
Он записывает несколько строк, указанных в коллекции. Иногда это бывает удобно, если в процессе обработки текста мы имеем список и его требуется целиком поместить в файл.
Чтение и запись в бинарном режиме доступа
Что такое бинарный режим доступа? Это когда данные из файла считываются один в один без какой-либо обработки. Обычно это используется для сохранения и считывания объектов. Давайте предположим, что нужно сохранить в файл вот такой список:
books = [ ("Евгений Онегин", "Пушкин А.С.", 200), ("Муму", "Тургенев И.С.", 250), ("Мастер и Маргарита", "Булгаков М.А.", 500), ("Мертвые души", "Гоголь Н.В.", 190) ]
Откроем файл на запись в бинарном режиме:
file = open("out.bin", "wb")
Далее, для работы с бинарными данными подключим специальный встроенный модуль pickle:
И вызовем него метод dump:
Все, мы сохранили этот объект в файл. Теперь прочитаем эти данные. Откроем файл на чтение в бинарном режиме:
file = open("out.bin", "rb")
и далее вызовем метод load модуля pickle:
Все, теперь переменная bs ссылается на эквивалентный список:
Аналогичным образом можно записывать и считывать сразу несколько объектов. Например, так:
import pickle book1 = ["Евгений Онегин", "Пушкин А.С.", 200] book2 = ["Муму", "Тургенев И.С.", 250] book3 = ["Мастер и Маргарита", "Булгаков М.А.", 500] book4 = ["Мертвые души", "Гоголь Н.В.", 190] try: file = open("out.bin", "wb") try: pickle.dump(book1, file) pickle.dump(book2, file) pickle.dump(book3, file) pickle.dump(book4, file) finally: file.close() except FileNotFoundError: print("Невозможно открыть файл")
А, затем, считывание в том же порядке:
file = open("out.bin", "rb") b1 = pickle.load(file) b2 = pickle.load(file) b3 = pickle.load(file) b4 = pickle.load(file) print( b1, b2, b3, b4, sep="\n" )
Вот так в Python выполняется запись и считывание данных из файла.
Задания для самоподготовки
1. Выполните считывание данных из текстового файла через символ и записи прочитанных данных в другой текстовый файл. Прочитывайте так не более 100 символов.
2. Пользователь вводит предложение с клавиатуры. Разбейте это предложение по словам (считать, что слова разделены пробелом) и сохраните их в столбец в файл.
3. Пусть имеется словарь:
d = {«house»:
«дом», «car»: «машина»,
«tree»:
«дерево», «road»: «дорога»,
«river»:
«река»}
Необходимо каждый элемент этого словаря сохранить в бинарном файле как объект. Затем, прочитать этот файл и вывести считанные объекты в консоль.
Python Файл открыт
Открыть файл на сервере
Предположим, у нас есть следующий файл, расположенный в той же папке, что и Python:
demofile.txt
Привет! Добро пожаловать в demofile.txt
Этот файл предназначен для тестирования.
Хорошо
Удача!
Чтобы открыть файл, используйте встроенную функцию open ()
.
Функция open ()
возвращает файловый объект, имеющий read ()
метод чтения содержимого файла:
Если файл находится в другом месте, вам нужно будет указать путь к файлу, как это:
Пример
Откройте файл в другом месте:
f = open («D: \\ myfiles \ welcome.txt «,» r «)
print (f.read ())
Части файла, доступные только для чтения
По умолчанию метод read ()
возвращает весь текст, но вы также можете указать, сколько символов вы хотите вернуть:
Пример
Вернуть 5 первых символов файла:
f = open («demofile.txt», «r»)
print (f.read ( 5 ))
Прочитать строки
Вы можете вернуть одну строку с помощью метода readline ()
:
Пример
Прочитать одну строку файла:
f = open («демофайл.txt «,» r «)
print (f.readline ())
Дважды позвонив readline ()
, можно прочитать
две первые строки:
Пример
Прочитать две строки файла:
f = open («demofile.txt», «r»)
print (f.readline ())
print (f.readline ())
Перебирая строки файла в цикле, вы можете прочитать весь файл, строка за строкой:
Пример
Цикл по файлу построчно:
f = open («демофайл.txt «,» r «)
для x в f:
print (x)
Закрыть файлы
Рекомендуется всегда закрывать файл после завершения работы с ним.
Пример
Закройте файл, когда закончите с ним:
f = open («demofile.txt», «r»)
print (f.readline ())
f.close ()
Примечание: Всегда закрывайте файлы, в некоторых случаях из-за буферизации изменения, внесенные в файл, могут не отображаться, пока вы не закроете файл.
Как запускать сценарии Python — настоящий Python
Смотреть сейчас В этом руководстве есть связанный видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Запуск скриптов Python
Один из самых важных навыков, который вам необходимо приобрести как разработчика Python, — это уметь запускать сценарии и код Python. Это будет единственный способ узнать, работает ли ваш код так, как вы планировали.Это даже единственный способ узнать, работает ли ваш код вообще!
Это пошаговое руководство проведет вас через ряд способов запуска скриптов Python в зависимости от вашей среды, платформы, потребностей и навыков программиста.
У вас будет возможность узнать, как запускать сценарии Python, используя:
- Командная строка операционной системы или терминал
- Интерактивный режим Python
- IDE или текстовый редактор, который вам больше всего нравится
- Файловый менеджер вашей системы, двойным щелчком по иконке вашего скрипта
Таким образом вы получите знания и навыки, необходимые для повышения продуктивности и гибкости цикла разработки.
Пройдите тест: Проверьте свои знания с помощью нашей интерактивной викторины «Как запускать скрипты Python». По завершении вы получите оценку, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
Скрипты против модулей
В вычислениях слово сценарий используется для обозначения файла, содержащего логическую последовательность заказов, или файла пакетной обработки. Обычно это простая программа, хранящаяся в текстовом файле.
Скрипты всегда обрабатываются каким-то интерпретатором, который отвечает за последовательное выполнение каждой команды.
Простой текстовый файл, содержащий код Python, который предназначен для непосредственного выполнения пользователем, обычно называется сценарием , что является неофициальным термином, обозначающим программный файл верхнего уровня .
С другой стороны, простой текстовый файл, содержащий код Python, предназначенный для импорта и использования из другого файла Python, называется модулем .
Итак, основное различие между модулем и сценарием состоит в том, что модули предназначены для импорта , а сценарии предназначены для непосредственного выполнения .
В любом случае важно знать, как запускать код Python, который вы пишете в своих модулях и скриптах.
Что такое интерпретатор Python?
Python — отличный язык программирования, который позволяет продуктивно работать в самых разных областях.
Python также представляет собой часть программного обеспечения, называемого интерпретатором . Интерпретатор — это программа, которая вам понадобится для запуска кода и скриптов Python. Технически интерпретатор — это уровень программного обеспечения, который работает между вашей программой и вашим компьютерным оборудованием, чтобы запустить ваш код.
В зависимости от используемой вами реализации Python, интерпретатор может быть:
- Программа, написанная на C, например CPython, которая является основной реализацией языка
- Программа, написанная на Java, например Jython
- Программа, написанная на самом Python, например PyPy
- Программа, реализованная в .NET, например IronPython
Какую бы форму ни принял интерпретатор, написанный вами код всегда будет выполняться этой программой. Следовательно, первое условие для запуска скриптов Python — это правильно установленный интерпретатор в вашей системе.
Интерпретатор может запускать код Python двумя способами:
- Как скрипт или модуль
- Как фрагмент кода, введенный в интерактивный сеанс
Как запустить код Python в интерактивном режиме
Широко используемый способ запуска кода Python — интерактивный сеанс. Чтобы запустить интерактивный сеанс Python, просто откройте командную строку или терминал и затем введите python
или python3
в зависимости от вашей установки Python, а затем нажмите , введите .
Вот пример того, как это сделать в Linux:
$ python3
Python 3.6.7 (по умолчанию, 22 октября 2018 г., 11:32:17)
[GCC 8.2.0] в Linux
Для получения дополнительной информации введите «помощь», «авторские права», «кредиты» или «лицензия».
>>>
Стандартный запрос для интерактивного режима — >>>
, поэтому, как только вы увидите эти символы, вы поймете, что находитесь в режиме.
Теперь вы можете писать и запускать код Python по своему усмотрению, с единственным недостатком, заключающимся в том, что при закрытии сеанса ваш код исчезнет.
Когда вы работаете в интерактивном режиме, каждое выражение и оператор, которые вы вводите, оцениваются и немедленно выполняются:
>>> >>> print ('Hello World!')
Привет мир!
>>> 2 + 5
7
>>> print ('Добро пожаловать в настоящий Python!')
Добро пожаловать в Real Python!
Интерактивный сеанс позволит вам протестировать каждый фрагмент кода, который вы пишете, что делает его отличным инструментом разработки и отличным местом для экспериментов с языком и тестирования кода Python на лету.
Для выхода из интерактивного режима вы можете использовать одну из следующих опций:
-
quit ()
илиexit ()
, которые являются встроенными функциями - Ctrl + Z и Введите комбинацию клавиш в Windows или просто Ctrl + D в Unix-подобных системах
Примечание: Первое практическое правило, которое следует помнить при использовании Python, заключается в том, что если вы сомневаетесь в том, что делает часть кода Python, запустите интерактивный сеанс и попробуйте его, чтобы увидеть, что произойдет.
Если вы никогда не работали с командной строкой или терминалом, вы можете попробовать следующее:
В Windows командная строка обычно называется командной строкой или консолью MS-DOS, и это программа с именем
cmd.exe
. Путь к этой программе может значительно отличаться от одной версии системы к другой.Быстрый способ получить к нему доступ — нажать комбинацию клавиш Win + R , что приведет вас к диалоговому окну Выполнить .Когда вы окажетесь там, введите
cmd
и нажмите . Введите .В GNU / Linux (и других Unix) есть несколько приложений, которые предоставляют вам доступ к системной командной строке. Некоторые из самых популярных — xterm, Gnome Terminal и Konsole. Это инструменты, запускающие оболочку или терминал, такие как Bash, ksh, csh и т. Д.
В этом случае путь к этим приложениям гораздо более разнообразен и зависит от дистрибутива и даже от используемой вами среды рабочего стола.Итак, вам нужно прочитать документацию по вашей системе.
В Mac OS X вы можете получить доступ к системному терминалу из Приложения → Утилиты → Терминал .
Как интерпретатор запускает сценарии Python?
Когда вы пытаетесь запустить скрипты Python, начинается многоэтапный процесс. В этом процессе переводчик будет:
Последовательная обработка операторов вашего скрипта
Скомпилировать исходный код в промежуточный формат, известный как байт-код
Этот байт-код представляет собой перевод кода на язык нижнего уровня, независимый от платформы.Его цель — оптимизировать выполнение кода. Итак, в следующий раз, когда интерпретатор выполнит ваш код, он пропустит этот шаг компиляции.
Строго говоря, эта оптимизация кода предназначена только для модулей (импортированных файлов), а не для исполняемых скриптов.
Отгрузить код для исполнения
В этот момент вступает в действие нечто, известное как виртуальная машина Python (PVM). PVM — это среда выполнения Python. Это цикл, который повторяет инструкции вашего байт-кода, чтобы запускать их одну за другой.
PVM не является изолированным компонентом Python. Это просто часть системы Python, установленной на вашем компьютере. Технически PVM — это последний этап того, что называется интерпретатором Python.
Весь процесс выполнения скриптов Python известен как модель выполнения Python .
Примечание: Это описание модели выполнения Python соответствует основной реализации языка, то есть CPython. Поскольку это не языковое требование, оно может быть изменено в будущем.
Как запускать сценарии Python с помощью командной строки
Интерактивный сеанс Python позволит вам написать много строк кода, но как только вы закроете сеанс, вы потеряете все, что написали. Вот почему обычный способ написания программ на Python — использовать простые текстовые файлы. По соглашению эти файлы будут иметь расширение .py
. (В системах Windows расширение также может быть .pyw
.)
могут быть созданы с помощью любого текстового редактора.Если вы новичок в программировании на Python, вы можете попробовать Sublime Text, мощный и простой в использовании редактор, но вы можете использовать любой редактор, который вам нравится.
Чтобы продолжить изучение этого руководства, вам необходимо создать тестовый сценарий. Откройте ваш любимый текстовый редактор и напишите следующий код:
1 #! / Usr / bin / env python3
2
3print ('Привет, мир!')
Сохраните файл в рабочем каталоге с именем hello.py
. Когда тестовый сценарий готов, вы можете продолжить чтение.
Использование
python
Команда Чтобы запустить сценарии Python с помощью команды python
, вам необходимо открыть командную строку и ввести слово python
или python3
, если у вас есть обе версии, а затем указать путь к вашему сценарию, как это :
$ python3 hello.py
Привет мир!
Если все работает нормально, после нажатия Enter вы увидите фразу Hello World!
на вашем экране.Вот и все! Вы только что запустили свой первый скрипт Python!
Если это не работает, возможно, вам нужно будет проверить вашу систему PATH
, вашу установку Python, способ создания сценария hello.py
, место, где вы его сохранили, и так далее.
Это самый простой и практичный способ запуска скриптов Python.
Перенаправление вывода
Иногда полезно сохранить вывод сценария для последующего анализа. Вот как это сделать:
$ python3 привет.py> output.txt
Эта операция перенаправляет вывод вашего скрипта на output.txt
, а не на стандартный вывод системы ( stdout
). Этот процесс широко известен как перенаправление потока и доступен как в Windows, так и в Unix-подобных системах.
Если output.txt
не существует, он создается автоматически. С другой стороны, если файл уже существует, его содержимое будет заменено новым выводом.
Наконец, если вы хотите добавить вывод последовательных выполнений в конец вывода .txt
, то вы должны использовать две угловые скобки ( >>
) вместо одной, вот так:
$ python3 hello.py >> output.txt
Теперь вывод будет добавлен в конец output.txt
.
с опцией
-m
Опция Python предлагает ряд параметров командной строки, которые вы можете использовать в соответствии с вашими потребностями. Например, если вы хотите запустить модуль Python, вы можете использовать команду python -m <имя-модуля>
.
Опция -m
ищет sys.path
для имени модуля и запускает его содержимое как __main__
:
$ python3 -m привет
Привет мир!
Примечание. имя-модуля
должно быть именем объекта модуля, а не строкой.
Использование имени файла сценария
В последних версиях Windows можно запускать сценарии Python, просто вводя имя файла, содержащего код, в командной строке:
C: \ devspace> привет.ру
Привет мир!
Это возможно, потому что Windows использует системный реестр и ассоциацию файлов, чтобы определить, какую программу использовать для запуска конкретного файла.
В Unix-подобных системах, таких как GNU / Linux, вы можете добиться чего-то подобного. Вам нужно будет только добавить первую строку с текстом #! / Usr / bin / env python
, как вы это сделали с hello.py
.
Для Python это простой комментарий, но для операционной системы эта строка указывает, какую программу нужно использовать для запуска файла.
Эта строка начинается с #! Комбинация символов
, которая обычно называется hash bang или shebang , и продолжается путем перехода к интерпретатору.
Есть два способа указать путь к интерпретатору:
-
#! / Usr / bin / python
: запись абсолютного пути -
#! / Usr / bin / env python
: с использованием команды операционной системыenv
, которая находит и выполняет Python путем поиска в переменной средыPATH
Эта последняя опция полезна, если вы помните, что не все Unix-подобные системы размещают интерпретатор в одном и том же месте.
Наконец, чтобы выполнить сценарий, подобный этому, вам необходимо назначить ему права на выполнение, а затем ввести имя файла в командной строке.
Вот пример того, как это сделать:
$ # Назначить разрешения на выполнение
$ chmod + x hello.py
$ # Запустить скрипт, используя его имя файла
$ ./hello.py
Привет мир!
Имея права на выполнение и правильно настроенную строку shebang, вы можете запустить сценарий, просто набрав его имя файла в командной строке.
Наконец, вы должны отметить, что если ваш скрипт не находится в вашем текущем рабочем каталоге, вам нужно будет использовать путь к файлу, чтобы этот метод работал правильно.
Как запустить скрипты Python в интерактивном режиме
Также можно запускать сценарии и модули Python из интерактивного сеанса. Этот вариант предлагает вам множество возможностей.
Использование импорта
Когда вы импортируете модуль, на самом деле происходит то, что вы загружаете его содержимое для последующего доступа и использования.В этом процессе интересно то, что import
запускает код в качестве последнего шага.
Когда модуль содержит только определения классов, функций, переменных и констант, вы, вероятно, не будете знать, что код действительно был запущен, но когда модуль включает вызовы функций, методов или других операторов, которые генерируют видимые результаты, тогда вы станете свидетелем его исполнения.
Это дает вам еще один вариант для запуска скриптов Python:
>>> >>> импорт привет
Привет мир!
Обратите внимание, что эта опция работает только один раз за сеанс.После первого import
последующие выполнения import
ничего не делают, даже если вы изменяете содержимое модуля. Это связано с тем, что операции import
дороги и поэтому выполняются только один раз. Вот пример:
>>> import hello # Ничего не делать
>>> import hello # Больше ничего не делать
Эти две операции import
ничего не делают, потому что Python знает, что hello
уже импортирован.
Для работы этого метода есть некоторые требования:
- Файл с кодом Python должен находиться в вашем текущем рабочем каталоге.
- Файл должен находиться в пути поиска модулей Python (PMSP), где Python ищет модули и пакеты, которые вы импортируете.
Чтобы узнать, что в вашем текущем PMSP, вы можете запустить следующий код:
>>> >>> import sys
>>> для пути в sys.path:
... печать (путь)
...
/usr/lib/python36.zip
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/usr/local/lib/python3.6/dist-packages
/ usr / lib / python3 / dist-пакеты
Запустив этот код, вы получите список каталогов и файлов .zip и
, в которых Python будет искать модули, которые вы импортируете.
Использование
importlib
и imp
В стандартной библиотеке Python вы можете найти importlib
, который представляет собой модуль, предоставляющий import_module ()
.
С помощью import_module ()
вы можете эмулировать операцию import
и, следовательно, выполнять любой модуль или скрипт. Взгляните на этот пример:
>>> импорт importlib
>>> importlib.import_module ('привет')
Привет мир!
<модуль 'привет' из '/home/username/hello.py'>
После того, как вы впервые импортировали модуль, вы не сможете продолжать использовать import
для его запуска. В этом случае вы можете использовать importlib.reload ()
, что заставит интерпретатор повторно импортировать модуль, как в следующем коде:
>>> import hello # Первый импорт
Привет мир!
>>> import hello # Второй импорт, который ничего не делает
>>> импортировать importlib
>>> importlib.reload (привет)
Привет мир!
<модуль 'привет' из '/home/username/hello.py'>
Здесь важно отметить, что аргумент reload ()
должен быть именем объекта модуля, а не строкой:
>>> importlib.перезагрузить ('привет')
Отслеживание (последний вызов последний):
...
TypeError: аргумент reload () должен быть модулем
Если вы используете строку в качестве аргумента, то reload ()
вызовет исключение TypeError
.
Примечание: Вывод предыдущего кода был сокращен ( ...
) для экономии места.
importlib.reload ()
пригодится, когда вы модифицируете модуль и хотите проверить, работают ли ваши изменения, не выходя из текущего интерактивного сеанса.
Наконец, если вы используете Python 2.x, то у вас будет imp
, который представляет собой модуль, который предоставляет функцию под названием reload ()
. imp.reload ()
работает аналогично importlib.reload ()
. Вот пример:
>>> import hello # Первый импорт
Привет мир!
>>> import hello # Второй импорт, который ничего не делает
>>> импортный чертенок
>>> imp.reload (привет)
Привет мир!
<модуль 'hello' из '/ home / username / hello.py '>
В Python 2.x reload ()
является встроенной функцией. В версиях 2.6 и 2.7 он также включен в imp
для облегчения перехода на 3.x.
Примечание. imp
устарел, начиная с версии 3.4 языка. Пакет imp
ожидает прекращения поддержки в пользу importlib
.
Использование
runpy.run_module ()
и runpy.run_path ()
Стандартная библиотека включает модуль под названием runpy
.В этом модуле вы можете найти run_module ()
, функцию, которая позволяет запускать модули без их предварительного импорта. Эта функция возвращает словарь globals
исполняемого модуля.
Вот пример того, как его можно использовать:
>>> >>> runpy.run_module (mod_name = 'hello')
Привет мир!
{'__name__': 'привет',
...
'_': Никто}}
Модуль находится с использованием стандартного механизма import
и затем выполняется в новом пространстве имен модуля.
Первый аргумент run_module ()
должен быть строкой с абсолютным именем модуля (без расширения .py
).
С другой стороны, runpy
также предоставляет run_path ()
, что позволит вам запустить модуль, указав его местоположение в файловой системе:
>>> import runpy
>>> runpy.run_path (path_name = 'hello.py')
Привет мир!
{'__name__': '',
...
'_': Никто}}
Подобно run_module ()
, run_path ()
возвращает словарь globals
исполняемого модуля.
Параметр path_name
должен быть строкой и может относиться к следующему:
- Расположение исходного файла Python
- Расположение скомпилированного файла байт-кода
- Значение действительной записи в
sys.path
, содержащей модуль__main__
(файл__main__.py
)
Взлом
exec ()
До сих пор вы видели наиболее часто используемые способы запуска скриптов Python. В этом разделе вы увидите, как это сделать с помощью exec ()
, встроенной функции, поддерживающей динамическое выполнение кода Python.
exec ()
предоставляет альтернативный способ запуска ваших скриптов:
>>> exec (open ('hello.py'). Read ())
'Привет мир!'
Этот оператор открывает hello.py
, считывает его содержимое и отправляет его exec ()
, которая, наконец, запускает код.
Приведенный выше пример немного необычен. Это просто «хитрость», которая показывает, насколько универсальным и гибким может быть Python.
Использование
execfile ()
(Python 2.только x) Если вы предпочитаете использовать Python 2.x, вы можете использовать встроенную функцию execfile ()
, которая может запускать сценарии Python.
Первым аргументом execfile ()
должна быть строка, содержащая путь к файлу, который вы хотите запустить. Вот пример:
>>> execfile ('hello.py')
Привет мир!
Здесь hello.py
анализируется и оценивается как последовательность операторов Python.
Как запускать сценарии Python из среды IDE или текстового редактора
При разработке более крупных и сложных приложений рекомендуется использовать интегрированную среду разработки (IDE) или расширенный текстовый редактор.
Большинство из этих программ предлагают возможность запуска ваших сценариев изнутри самой среды. Обычно они включают команду Run или Build , которая обычно доступна на панели инструментов или из главного меню.
Стандартный дистрибутивPython включает IDLE в качестве IDE по умолчанию, и вы можете использовать его для написания, отладки, изменения и запуска ваших модулей и скриптов.
Другие IDE, такие как Eclipse-PyDev, PyCharm, Eric и NetBeans, также позволяют запускать сценарии Python изнутри среды.
Расширенные текстовые редакторы, такие как Sublime Text и Visual Studio Code, также позволяют запускать ваши скрипты.
Чтобы понять подробности того, как запускать скрипты Python из предпочитаемой IDE или редактора, вы можете взглянуть на его документацию.
Как запускать сценарии Python из файлового менеджера
Запуск сценария двойным щелчком по его значку в файловом менеджере — еще один возможный способ запуска ваших сценариев Python. Этот параметр не может широко использоваться на этапе разработки, но его можно использовать при выпуске кода в производственную среду.
Чтобы иметь возможность запускать скрипты двойным щелчком, вы должны выполнить некоторые условия, которые будут зависеть от вашей операционной системы.
Windows, например, связывает расширения .py
и .pyw
с программами python.exe
и pythonw.exe
соответственно. Это позволяет запускать сценарии двойным щелчком по ним.
Если у вас есть сценарий с интерфейсом командной строки, скорее всего, вы увидите на экране только вспышку черного окна.Чтобы избежать этой неприятной ситуации, вы можете добавить в конец скрипта оператор типа input ('Press Enter to Continue ...')
. Таким образом, программа остановится, пока вы не нажмете , введите .
Однако у этого трюка есть свои недостатки. Например, если в вашем скрипте есть ошибка, выполнение будет прервано до достижения input ()
оператора, и вы все равно не сможете увидеть результат.
В Unix-подобных системах вы, вероятно, сможете запускать свои скрипты, дважды щелкнув их в файловом менеджере.Для этого у вашего скрипта должны быть разрешения на выполнение, и вам нужно будет использовать уловку shebang, которую вы уже видели. Точно так же вы можете не увидеть на экране никаких результатов, когда дело касается скриптов интерфейса командной строки.
Поскольку выполнение сценариев двойным щелчком имеет несколько ограничений и зависит от многих факторов (таких как операционная система, файловый менеджер, разрешения на выполнение, ассоциации файлов), рекомендуется рассматривать его как жизнеспособный вариант для уже существующих сценариев. отлажен и готов к запуску в производство.
Заключение
Прочитав это руководство, вы приобрели знания и навыки, необходимые для выполнения сценариев и кода Python несколькими способами и в различных ситуациях и средах разработки.
Теперь вы можете запускать сценарии Python из:
- Командная строка операционной системы или терминал
- Интерактивный режим Python
- IDE или текстовый редактор, который вам больше всего нравится
- Файловый менеджер вашей системы, двойным щелчком по иконке вашего скрипта
Эти навыки сделают ваш процесс разработки намного быстрее, а также более продуктивным и гибким.
Пройдите тест: Проверьте свои знания с помощью нашей интерактивной викторины «Как запускать скрипты Python». По завершении вы получите оценку, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
Смотреть сейчас В этом руководстве есть связанный видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Запуск скриптов Python
Открыть файл в Python
Python предоставляет встроенные функции для создания, записи и чтения файлов.Есть два типа файлов, с которыми можно работать в Python: обычные текстовые файлы и двоичные файлы (написанные на двоичном языке, 0s
и 1s
).
- Текстовые файлы: В этом типе файла каждая строка текста заканчивается специальным символом EOL (конец строки) , который является символом новой строки (
'\ n'
) в Python по умолчанию. - Двоичные файлы: В файлах этого типа отсутствует терминатор для строки, и данные сохраняются после их преобразования в понятный для машины двоичный язык.
Ознакомьтесь с приведенными ниже статьями, чтобы получить представление об основах работы с файлами.
Открытие файла
Открытие файла означает подготовку файла к чтению или записи. Это можно сделать с помощью функции open ()
. Эта функция возвращает объект файла и принимает два аргумента: один принимает имя файла, а другой принимает режим (режим доступа). Теперь возникает вопрос, что такое режим доступа?
Режимы доступа определяют тип операций, возможных в открытом файле.Это относится к тому, как файл будет использоваться после его открытия. Эти режимы также определяют расположение дескриптора файла в файле. Дескриптор файла похож на курсор, который определяет, откуда данные должны быть прочитаны или записаны в файле. В python есть 6 режимов доступа.
- Только чтение («r»): Открыть текстовый файл для чтения. Ручка находится в начале файла. Если файл не существует, возникает ошибка ввода-вывода. Это также режим по умолчанию, в котором открывается файл.
- Чтение и запись («r +»): Откройте файл для чтения и записи. Ручка находится в начале файла. Вызывает ошибку ввода-вывода, если файл не существует.
- Только запись («w»): Откройте файл для записи. Для существующего файла данные усекаются и перезаписываются. Ручка находится в начале файла. Создает файл, если файл не существует.
- Запись и чтение («w +»): Откройте файл для чтения и записи.Для существующего файла данные усекаются и перезаписываются. Ручка находится в начале файла.
- Только добавление (‘a’): Откройте файл для записи. Если файл не существует, он создается. Ручка находится в конце файла. Записываемые данные будут вставлены в конце после существующих данных.
- Добавить и прочитать («a +»): Откройте файл для чтения и записи. Если файл не существует, он создается. Ручка находится в конце файла.Записываемые данные будут вставлены в конце после существующих данных.
Синтаксис:
File_object = open (r "Имя_файла", "Режим_доступа")
Примечание: Файл должен существовать в том же каталоге, что и сценарий Python, в противном случае должен быть записан полный адрес файла.
Пример № 1: Предположим, текстовый файл выглядел так.
Мы хотим прочитать содержимое файла с помощью Python.
(file1.read ()) |
Вывод:
Добро пожаловать в GeeksForGeeks !!
Пример № 2: Предположим, мы хотим записать больше данных в указанный выше файл с помощью Python.
|
Вывод:
Внимание, компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS . А чтобы начать свое путешествие по машинному обучению, присоединитесь к курсу Машинное обучение - базовый уровень
Чтение и запись в текстовые файлы в Python
Python предоставляет встроенные функции для создания, записи и чтения файлов. Существует два типа файлов, которые могут обрабатываться в Python: обычные текстовые файлы и двоичные файлы (написанные на двоичном языке, нули и единицы).
- Текстовые файлы: В файлах этого типа каждая строка текста заканчивается специальным символом EOL (конец строки), который по умолчанию является символом новой строки (‘\ n’) в Python.
- Двоичные файлы: В файлах этого типа отсутствует терминатор для строки, и данные сохраняются после их преобразования в понятный для машины двоичный язык.
В этой статье мы сосредоточимся на открытии, закрытии, чтении и записи данных в текстовый файл.
Режимы доступа к файлам
Режимы доступа определяют тип операций, возможных в открытом файле. Это относится к тому, как файл будет использоваться после его открытия. Эти режимы также определяют расположение дескриптора файла в файле. Дескриптор файла подобен курсору, который определяет, откуда данные должны быть прочитаны или записаны в файле. В python есть 6 режимов доступа.
- Только чтение («r»): Открыть текстовый файл для чтения. Ручка находится в начале файла.Если файл не существует, возникает ошибка ввода-вывода. Это также режим по умолчанию, в котором открывается файл.
- Чтение и запись («r +»): Откройте файл для чтения и записи. Ручка находится в начале файла. Вызывает ошибку ввода-вывода, если файл не существует.
- Только запись («w»): Откройте файл для записи. Для существующего файла данные усекаются и перезаписываются. Ручка находится в начале файла. Создает файл, если файл не существует.
- Запись и чтение («w +») : открыть файл для чтения и записи. Для существующего файла данные усекаются и перезаписываются. Ручка находится в начале файла.
- Только добавление (‘a’) : Откройте файл для записи. Если файл не существует, он создается. Ручка находится в конце файла. Записываемые данные будут вставлены в конце после существующих данных.
- Добавить и прочитать («a +»): Откройте файл для чтения и записи.Если файл не существует, он создается. Ручка находится в конце файла. Записываемые данные будут вставлены в конце после существующих данных.
Открытие файла
Это делается с помощью функции open (). Для этой функции импорт модуля не требуется.
File_object = open (r "File_Name", "Access_Mode")
Файл должен существовать в том же каталоге, что и программный файл python, иначе полный адрес файла должен быть записан вместо имени файла.
Примечание: r помещается перед именем файла, чтобы символы в строке имени файла не рассматривались как специальные символы. Например, если в адресе файла есть \ temp, то \ t рассматривается как символ табуляции и возникает ошибка недопустимого адреса. R делает строку необработанной, то есть сообщает, что строка не содержит каких-либо специальных символов. Букву r можно игнорировать, если файл находится в том же каталоге, а адрес не помещается.
|
Здесь файл1 создается как объект для MyFile1, а файл2 как объект для MyFile2
Закрытие файла
Функция close () закрывает файл и освобождает пространство памяти, полученное этот файл.Он используется тогда, когда файл больше не нужен или если его нужно открыть в другом файловом режиме.
File_object.close ()
|
Запись в файл
Есть два способа записи в файл.
- write (): Вставляет строку str1 в одну строку в текстовый файл.
File_object.write (str1)
- writelines (): Для списка строковых элементов каждая строка вставляется в текстовый файл. Используется для одновременной вставки нескольких строк.
File_object.writelines (L) для L = [str1, str2, str3]
Чтение из файла
Есть три способа чтения данных из текстового файла.
- read (): Возвращает прочитанные байты в виде строки. Читает n байтов, если n не указано, читает весь файл.
File_object.read ([n])
- readline (): Считывает строку файла и возвращает в виде строки. Для указанного n считывает не более n байтов. Однако не читает более одной строки, даже если n превышает длину строки.
File_object.readline ([n])
- readlines (): Считывает все строки и возвращает их как каждую строку как строковый элемент в списке.
File_object.readlines ()
Примечание. ‘\ n’ рассматривается как специальный символ из двух байтов
|
Выход:
Вывод функции чтения Привет Это Дели Это париж Это лондон Вывод функции Readline: Привет Вывод функции Read (9): Привет Чт Вывод функции Readline (9): Привет Вывод функции Readlines: ['Привет \ n', 'Это Дели \ n', 'Это Париж \ n', 'Это Лондон \ n']
Добавление к файлу
|
Выход:
Вывод строк чтения после добавления ['Это Дели \ n', 'Это Париж \ n', 'Это Лондон \ n', 'Сегодня \ n'] Вывод строк чтения после записи ['Завтра \ n']
Связанная статья:
Объекты файлов в Python
Эта статья предоставлена Harshit Agrawal . Если вам нравится GeeksforGeeks, и вы хотите внести свой вклад, вы также можете написать статью, используя свой вклад.geeksforgeeks.org или отправьте свою статью по адресу [email protected]. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или если вы хотите поделиться дополнительной информацией по теме, обсуждаемой выше.
Внимание компьютерщик! Укрепите свои основы с помощью курса Python Programming Foundation и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS .И чтобы начать свое путешествие по машинному обучению, присоединяйтесь к Машинное обучение - курс базового уровня
Как открывать файлы PY на ПК с Windows 10
автор: Мэтью АдамсЭксперт по Windows и программному обеспечению
Мэтью - фрилансер, опубликовавший множество статей по различным темам, связанным с технологиями. Его основное внимание уделяется ОС Windows и всему, что с ней связано.Он увлечен ... Читать дальше Обновлено:Размещено: август 2017 г.
- Вы ищете быстрый способ открыть файлы PY на ПК с Windows 10? Именно с этой целью мы составили список советов.
- Один полезный трюк заключается в использовании интерпретатора Python для открытия сценариев PY, как описано ниже.
- Вы можете легко отредактировать сценарий PY в Блокноте или использовать одну из этих замечательных альтернатив Блокнота.
- Неважно, что вы не профессионал. Наш File Opener Hub может помочь вам запустить бесчисленные типы файлов.
Популярные форматы файлов больше не требуют специального программного обеспечения. Просто скачайте File Viewer Plus 4 и откройте их все в одной среде. Документы, медиа, архивы, электронная почта, камера, инфографика, исходные коды и многое другое - все это поддерживается этим инструментом. Вот что он делает:
открыть все файлы
в той же среде
Загрузить сейчас
Python - это интерпретируемый язык программирования, с помощью которого некоторые программисты разрабатывают программное обеспечение.PY - это формат файла для скриптов Python.
СкриптыPY также могут иметь альтернативные расширения файлов, в том числе PYC, PYD и PWC. Сценарии представляют собой текстовые файлы, но вам понадобится интерпретатор Python для запуска сценария PY в Windows.
Как я могу открывать файлы PY на моем ПК с Windows 10?
1. Загрузите инструмент File Viewer Plus
Вы можете открывать PY и многие другие файлы исходного кода с помощью File Viewer Plus. Это универсальный просмотрщик файлов для Windows, который может открывать и отображать более 300 различных типов файлов, просматривать и редактировать файлы исходного кода.
Кроме того, вы собираетесь загрузить надежный редактор и конвертер. Короче говоря, это также ваш шанс изменить фотографии с помощью расширенного редактора изображений и преобразовать ваши последние аудио- и видеоформаты в различные типы мультимедийных файлов.
Ваш бюджет ограничен? Тогда ограниченное по времени предложение, включающее 30-дневную гарантию возврата денег, скорее всего, будет звучать для ваших ушей как музыка.
Программа просмотра файлов Plus
File Viewer Plus - лучший инструмент для быстрого открытия файлов PY на вашем компьютере с Windows 10.Готовы попробовать?
2. Откройте сценарии Python с помощью Notepad ++
- Начните, щелкнув правой кнопкой мыши кнопку «Пуск» и выбрав Система , чтобы открыть окно на снимке экрана непосредственно ниже.
- Щелкните либо Notepad ++ Installer 32-bit x86 (32-bit) , либо Notepad ++ Installer 64-bit x64 (64-bit) . Будет загружен 32- или 64-разрядный мастер установки, с помощью которого вы сможете установить программное обеспечение.
- Затем вы можете открыть сценарий в Notepad ++, щелкнув Файл > Открыть .
Программисты могут редактировать сценарии Python с помощью разнообразного программного обеспечения. Фактически, вы можете редактировать сценарий PY в Блокноте. Однако Notepad ++ - лучший сторонний текстовый редактор, который также поддерживает формат файла PY.
Включает выделение и сворачивание синтаксиса, параметры записи макросов, вкладки документов, настраиваемый графический интерфейс, а также вы можете расширить программное обеспечение с помощью плагинов сценариев.
Вы можете добавить Notepad ++ на большинство платформ Windows. Обратите внимание, что это программное обеспечение имеет 32- и 64-битную версии.64-битные версии не работают в 32-битных системах.
Существуют также различные редакторы Python, с помощью которых вы можете открывать скрипты. В остальном это редакторы IDE, предназначенные для написания сценариев Python.
PyScripter, PyDev и PyCharm - это три программы IDE с открытым исходным кодом, с помощью которых вы можете открывать файлы PY.
IDE, вероятно, является лучшим программным обеспечением для кодирования Python, чем Notepad ++, поскольку они также включают инструменты отладки и интегрированные интерпретаторы.
3. Легко запускать сценарии Python
- Загрузите интерпретатор CPython.Нажмите кнопку Download Python 3.6.2 , чтобы сохранить один из наиболее обновленных интерпретаторов в Windows.
- Откройте меню Win + X, нажав сочетание клавиш Win + X.
- Выберите Командная строка (администратор) , чтобы открыть окно CP.
- Откройте папку, содержащую ваш скрипт Python, в командной строке, введя «Cd», а затем путь к файлу.
- Затем введите полный путь к интерпретатору CPython, а затем полное расположение файла PY в командной строке, которое должно включать интерпретатор Python exe и заголовок файла PY.Например, вы можете ввести что-то вроде этого: C: Python27python.exe C: User FolderPY Files SubfolderPy file title.PY
- Нажмите Enter, чтобы открыть и запустить сценарий PY.
Текстовые редакторы подходят для редактирования файлов, но вам понадобится интерпретатор Python, чтобы открывать и запускать сценарии PY. Некоторые интерпретаторы поставляются в комплекте с программным обеспечением IDE Python.
Однако CPython, иначе эталонная реализация, является интерпретатором по умолчанию для языка программирования. Используйте описанные выше шаги, чтобы открыть скрипты PY с этим интерпретатором.
Если у вас возникли проблемы с доступом к командной строке в качестве администратора, вам лучше ознакомиться с этим руководством.
Итак, вы можете редактировать и запускать файлы PY с помощью текстовых редакторов, программного обеспечения IDE и интерпретаторов Python.
Вы также можете конвертировать файлы сценариев PY в Portable Document Format с помощью бесплатного программного обеспечения PDF24 Creator. Скорее всего, PDF24 просто идеально подходит для того, что вам нужно.
Если у вас есть другие предложения или вопросы, не стесняйтесь оставлять их в разделе комментариев ниже.
Была ли эта страница полезной? 896Спасибо!
Недостаточно подробностей Сложно понять Другой Связаться с экспертомНачать разговор
Начало работы с Python
Начало работы с PythonНачало работы с программированием на Python для пользователей Windows
Установка Python
- Загрузите текущую производственную версию Python (2.7.1) из Сайт загрузки Python.
- Дважды щелкните значок только что загруженного файла.
- Примите параметры по умолчанию, данные вам, пока не дойдете до Готово кнопка. Ваша установка завершена.
Настройка среды
- Начиная с Мой компьютер перейдите в следующий каталог C: \ Python27. В этой папке вы должны увидеть все файлы Python.
- Скопируйте этот адрес, начиная с C: и заканчивая 27 и закройте это окно.
- Щелкните Start . Щелкните правой кнопкой мыши Мой компьютер .
- Щелкните Properties . Нажмите Advanced System Settings или Продвинутый .
- Щелкните Переменные среды .
- В разделе Системные переменные найдите переменную Путь .
- Выберите Путь , щелкнув по нему. Щелкните Редактировать .
- Прокрутите до конца вправо от поля с названием Variable значение , используя стрелку вправо.
- Добавьте точку с запятой (;) в конец и вставьте путь (к Python папку), которую вы ранее скопировали. Щелкните ОК .
Написание вашей первой программы на Python
- Создайте папку с именем PythonPrograms на диске C: \ . В этой папке вы будете хранить все свои программы Python.
- Перейдите к Start и введите Run в Start Search box в загрузчике или щелкните Run .
- Введите блокнот в поле под названием Откройте .
- В блокноте введите следующую программу точно так, как написано:
# Файл: Hello.py печать "Hello World!"
- Перейдите в Файл и нажмите Сохранить как .
- В поле Сохранить в найдите диск C: , а затем выберите папку PythonPrograms .
- Для поля Имя файла удалите все, что там есть и введите Hello.py .
- В поле Сохранить как тип выберите Все файлы
- Нажмите Сохранить . Вы только что создали свою первую программу на Python.
Запуск первой программы
- Перейдите к Start и щелкните Run .
- Введите cmd в поле Откройте и нажмите OK.
- Появится темное окно. Введите cd C: \ и нажмите клавишу Enter.
- Если вы наберете dir , вы получите список всех папок в ваш диск C: .Вы должны увидеть папку PythonPrograms , которую вы созданный.
- Введите cd PythonPrograms и нажмите Enter. Это должно привести вас к Папка PythonPrograms.
- Введите dir , и вы должны увидеть файл Hello.py .
- Чтобы запустить программу, введите python Hello.py и нажмите Enter.
- Вы должны увидеть строку Hello World!
- Поздравляем, вы запустили свою первую программу на Python.
Начало работы с программированием на Python для пользователей Mac
Python поставляется в комплекте с Mac OS X. Но у вас есть версия вполне вероятно более старая версия. Загрузите последнюю версию двоичная версия Python, которая работает как на Power PC, так и на системах Intel, и установите его в вашей системе.
Написание вашей первой программы на Python
- Щелкните Файл , а затем Новое окно Finder .
- Щелкните Документы .
- Щелкните Файл , а затем Новая папка .
- Вызовите папку PythonPrograms . Вы будете хранить все связанные с классом программ там.
- Щелкните Applications , а затем TextEdit .
- Щелкните TextEdit в строке меню и выберите Preferences .
- Выберите Обычный текст .
- В пустом окне TextEdit введите следующую программу точно как дано:
# Файл: Здравствуйте.ру печать "Hello World!"
- В меню Файл в TextEdit щелкните Сохранить как .
- В поле Сохранить как: введите Hello.py .
- Выберите Documents и папку с файлами PythonPrograms .
- Щелкните Сохранить .
Запуск первой программы
- Выберите Приложения , затем Утилиты и Терминал .
- В вашем Терминале введите окно ls и возврат. Должно дать список всех папок верхнего уровня. Вы должны увидеть Папка с документами .
- Введите cd Documents и нажмите Return.
- Введите ls и нажмите Return, и вы должны увидеть папку PythonPrograms .
- Введите cd PythonPrograms и нажмите Return.
- Введите ls и нажмите return, и вы должны увидеть файл Здравствуйте.py .
- Чтобы запустить программу, введите python Hello.py и нажмите Return.
- Вы должны увидеть строку Hello World!
- Поздравляем, вы запустили свою первую программу на Python.
Запуск IDLE на Mac
- В окне терминала введите python . Это начнется оболочка Python. Приглашение для этого: >>>
- В приглашении оболочки Python введите import idlelib.холостой ход
- Это запустит IDLE IDE
Использование IDLE в Windows или Mac
- Пуск на холостом ходу
- Перейдите в меню «Файл» и нажмите Новое окно
- Введите вашу программу в
- Перейдите в меню «Файл» и нажмите «Сохранить». Введите filename.py Это сохранит его как обычный текстовый файл, который можно открыть в в любом редакторе по вашему выбору (например, в Блокноте или TextEdit).
- Чтобы запустить вашу программу, перейдите к Run и щелкните Run Module
Как открыть и закрыть файл в Python
Python имеет встроенную функцию open () для открытия файла, она возвращает нечто, называемое файловым объектом. Файловый объект содержит методы и атрибуты, которые можно использовать для сбора информации об открытом вами файле. Их также можно использовать для управления указанным файлом.
Открыть файл в Python
my_file = open (имя файла, режим файла)Здесь имя файла - это строковый аргумент, который указывает имя файла вместе с его путем, а режим файла также является строковым аргументом, который используется для указания того, как файл будет использоваться, например, для чтения или записи. My_file - это объект-обработчик файлов, также известный как указатель на файл.
пример
my_file = open ("my_file.txt", "r") # Открыть файл print ("Имя файла:", my_file.name) print ("Режим открытия:", my_file.mode)выход
Имя файла: my_file.txt Режим открытия: rВ приведенном выше примере откройте текстовый файл с именем «my_file.txt» в режиме только для чтения. Распечатайте имя файла и режим файла.
Закройте файл в Python
Когда вы закончите с файлом, используйте close () , чтобы закрыть его и освободить ресурсы, которые были связаны с файлом, и это делается с помощью метода Python close ().
пример
my_file = open ("my_file.txt", "r") # Открыть файл # выполняем файловые операции. my_file.close ()Важно отметить, что всегда проверяйте, что вы явно закрываете каждый открытый файл, когда его работа выполнена и у вас нет причин держать его открытым. Поскольку существует верхний предел количества файлов, которые программа может открывать. Если вы превысите этот предел, надежного способа восстановления не будет, поэтому программа может вылететь.
Метод close () не совсем безопасен.Если при выполнении какой-либо операции с файлом возникает исключение, код завершается без закрытия файла. Лучше использовать блок try ... finally .
пример
пытаться: my_file = open ("my_file.txt", "r") # Открыть файл # выполнить некоторые файловые операции. Ну наконец то: my_file.close ()В приведенном выше примере гарантируется, что файл будет правильно закрыт, даже если возникает исключение, вызывающее остановку выполнения программы.
Использование оператора «with» - самый безопасный способ обработки файловой операции в Python , поскольку оператор «with» гарантирует, что файл будет закрыт при выходе из блока внутри with.
пример
с open ("my_file.txt", "r") как my_file: # выполняем некоторые файловые операцииВ приведенном выше примере вам не нужно явно вызывать метод close (). Это делается изнутри.
Переименование и удаление файлов в Python
Модуль ОС в Python обеспечивает способ использования функций, зависящих от операционной системы.Модуль ОС входит в состав стандартных служебных модулей Python. Чтобы использовать этот модуль, вам нужно сначала импортировать его, а затем вы можете вызывать любые связанные функции.
Переименование файла в Python
os.rename (старое_имя_файла, новое_имя_файла)