Python файл: Работа с файлами

Файлы в Python OTUS

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

Файл представляет собой набор данных, сохраненных на компьютере, причем каждый файл имеет название — filename (имя файла, name of file).

В языке программирования Python выделяют 2 вида файлов:

— текстовые;

— бинарные.

Поговорим о каждом из типов подробнее.

Текстовые файлы. Формат .txt

Содержимое таких файлов вполне понятно человеку. То есть речь идет об обычных общепринятых символах, тексте, цифрах и т. п. Такие документы можно без проблем создавать, открывать, читать и редактировать Блокнотом и прочими простейшими редакторами.

Также важно отметить, что текст хранят не только в форме .txt, но и в формате.rtf (так называемом «формате обогащенного текста»).

Бинарные файлы. Формат .bin

В бинарных файлах отображение данных осуществляется в кодированной форме (применяются  лишь нули и единицы). То есть речь идет уже о последовательности битов. Как следует из подзаголовка, для хранения используется формат .bin.

Основные операции

По сути, практически любую операцию с файлом мы можем разделить на 3 главных этапа:

  1. Открытие.
  2. Непосредственно выполнение операции (чтение, запись).
  3. Закрытие.

Открытие. Метод open

В «Питоне» существует встроенная функция open. Используя ее, вы сможете открыть файл на персональном компьютере. Технически, речь идет о создании на основе файла объекта.

Синтаксис относительно прост:

f = open(file_name, access_mode)

Что здесь что:

  • file_name — это имя файла, который надо открыть;
  • access_mode — это режим открытия файла. Это может быть чтение, запись и так далее. Если ничего не указать, будут справедливы настройки по умолчанию, те есть станет использоваться режим чтения (r).

Полный список режимов открытия смотрите в таблице ниже:

В качестве примера давайте выполним создание текстового файла test. txt с последующим сохранением его в рабочей директории.

Открыть созданный документ можно в режиме чтения из рабочей директории:

f = open('test.txt','r') 

Здесь f представляет собой переменную-указатель на файл test.txt.

Идем далее. Код ниже выведет содержимое файла и информацию об этом файле.

>>> print(*f) # вывод содержимого

Hello, Otus!

>>> print(f) # вывод объекта

<_io.TextIOWrapper name='test.txt' mode='r' encoding='cp1252'>

Учтите, что в операционной системе «Виндовс» стандартная кодировка — это cp1252, в то время как в Linux — utf-08.

Закрытие. Метод close

Раз открыли, надо и закрыть — это высвободит ресурсы. Язык программирования Python автоматически закроет файл в том случае, если объект будет присвоен другому файлу.

Для закрытия есть несколько вариантов действий.

Вариант №1

Один из наиболее простых способов. Открытый файл закрываем с помощью метода close.

f = open('test.txt','r')

# работаем с файлом

f.close()

Все, документ закрыт (closed). Закрыв его таким образом, вы не сможете его использовать, пока не откроете по новой.

Вариант №2

Можно прописать try/finally. В результате файл закроется автоматически, если операции с ним приведут к исключениям. Закрытие произойдет до того, как остановится программа.

Синтаксис создания исключения следующий:

f = open('test.txt','r')

try:

   # работаем с файлом

finally:

   f.close()

Важно отметить, что файл следует открыть до срабатывания инструкции try.

Вариант №3

В третьем случае пригодится инструкция with, упрощающая обработку исключений посредством инкапсуляции начальных операций, а также задач по очистке и закрытию.

Тут уже инструкция close нужна не будет, так как with закроет файл автоматически.

Реализация в коде относительно проста:

with open('test.txt') as f:

    # работаем с документом

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

Используя соответствующие режимы, можно выполнять чтение информации и ее сохранение (save) в буфер памяти.

Функция read

Применяется для чтения содержимого после открытия документа в режиме чтения (r).

Вот, как это выглядит:

file.read(size)

Что здесь что:

  • file — это объект файла;
  • size — это число символов, которые необходимо прочесть. Если конкретное число не указывать, документ будет прочитан полностью.

>>> f = open('test.txt','r')

>>> f.read(7)  # читаем семь символов из test.txt

Функция readline

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

Для примера создадим test.txt со следующими строками:

This is Otus for developers 1.

This is Otus for developers 2.

This is Otus for developers 3.

И воспользуемся readline:

x = open('test.txt','r')

x.readline()  # читаем первую строку

This is Otus for developers 1.

>>> x.readline(2)  # читаем 2-ю строку

This is Otus for developers 2.

>>> x.readlines()  # читаем все строки сразу

['This is Otus for developers 1.','This is Otus for developers 2.','This is Otus for developers 3.']

Функция write

Чтобы выполнить сохранение, нужно использовать функцию write. Сохранение в буфер памяти возможно только в те документы, которые открыты для записи (их можно сохранять, когда они находятся в соответствующем режиме).

Синтаксис несложен:

file.write(string)

Если вы попытаетесь открыть в данном режиме файл, несуществующий в буфере, будет создан новый. Представим, что файла supertest.txt у нас нет. Однако при попытке его открыть в режиме чтения, он появится:

f = open('supertest.txt','w')  # открываем в режиме записи

f.write('Hello \n Otus')  # пишем Hello Otus в документ

Hello

Otus

f.close()  # закрываем документ

Переименование. Функция rename

Может возникнуть необходимость в переименовании имен файлов (filenames). Вопрос можно решить посредством функции rename. Но чтобы это сделать, сначала надо импортировать модуль os.

Синтаксис:

import os

os.rename(src,dest)

Что здесь что:

  • src — это файловый документ, которому надо изменить name;
  • dest — это новое имя.

Вот, как это выглядит в коде:

import os

# переименовываем otus1.txt в otus2.txt

>>> os. rename("otus1.txt","otus2.txt")

Основные методы

В таблице ниже вы увидите основные методы, которые используются при работе с файлами (files) в «Пайтон»:

Источник

Как прочитать файл через python?

Вопрос задан

Изменён 1 год 1 месяц назад

Просмотрен 318 раз

Есть файл api.php, но не могу его прочитать, я таким способом пытался открыть.

f = open("api.php", "r")
t = f.read()
print(t)

Пытался загуглить но нечего не помогло.

Ошибка

"C:\Users\Marlin\AppData\Local\Programs\Python\Python310\lib\encodings\cp1251.py",
 line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)
[0] UnicodeDecodeError: 'charmap' codec can't decode byte 0x98 in position 3656: 
character maps to <undefined> 
Для продолжения нажмите любую клавишу .
. .
  • python
  • python-3.x

5

import os
path = os.path.join(os.path.dirname(__file__), "api.php")
f = open(path, "r")
t = f.read()
f.close()
print(t)

Когда вы пишете относительный путь к файлу, он ищется в текущей рабочей директории, которая может отличаться от расположения скрипта. Текущую рабочуюю директорию (current working directory) можно получить с помощью os.getcwd(), полный путь к скрипту хранится в переменной __file__.

Файлы лучше открывать с помощью менеджера контекста with, который гарантирует закрытие файла в случае возникновения исключения и избавляет от необходимости закрывать файл.

import os
path = os.path.join(os.path.dirname(__file__), "api.php")
with open(path, "r") as f
    t = f.read()
print(t)
  1. Если хотите из любого другого места читать, тогда надо указывать абсолютный путь к читаемому файлу.
  2. Если просто указываете имя и расширение читаемого файла, тогда файл скрипта и читаемого файла д/б в одном каталоге:

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

os.

path — Общие манипуляции с путями — Документация по Python 3.11.3

Исходный код: Lib/posixpath.py (для POSIX) и Lib/ntpath.py (для Windows).


Этот модуль реализует некоторые полезные функции для путей. Читать или писать файлы см. open() , а для доступа к файловой системе см. os модуль. Параметры пути могут быть переданы в виде строк, байтов или любого объекта. реализация протокола os.PathLike .

В отличие от оболочки Unix, Python не выполняет никаких автоматических расширений пути. Можно вызывать такие функции, как

expanduser() и expandvars() . явно, когда приложению требуется расширение пути, похожее на оболочку. (Смотрите также модуль glob .)

См. также

Модуль pathlib предлагает объекты пути высокого уровня.

Примечание

Все эти функции принимают либо только байты, либо только строковые объекты в качестве их параметры. Результатом является объект того же типа, если путь или возвращается имя файла.

Примечание

Так как разные операционные системы имеют разные соглашения об именах путей, несколько версий этого модуля в стандартной библиотеке. Модуль os.path всегда является модулем пути, подходящим для операционной system, на которой работает Python, и поэтому может использоваться для локальных путей. Однако, вы также можете импортировать и использовать отдельные модули, если хотите манипулировать путь

всегда в одном из разных форматов. Все они имеют тот же интерфейс:

Изменено в версии 3.8: exists() , lexists() , isdir() , isfile() , islink() и ismount() теперь возвращают False вместо создание исключения для путей, содержащих символы или байты непредставим на уровне ОС.

os.path.abspath( путь )

Вернуть нормализованную абсолютизированную версию пути path . На большинстве платформах, это эквивалентно вызову функции нормпат() как следует: normpath(join(os.getcwd(), путь)) .

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.basename ( путь )

Вернуть базовое имя pathname path . Это второй элемент пара возвращается путем передачи пути функции split() . Обратите внимание, что результат этой функции другой из программы Unix basename ; где базовое имя для '/foo/bar/' возвращает 'bar' , функция basename() возвращает пустая строка ( '' ).

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.commonpath ( путей )

Возвращает самый длинный общий подпуть каждого имени пути в последовательности путей . Поднимите ValueError , если путей содержат как абсолютные и относительные пути, пути находятся на разных дисках или если путей пусто. В отличие от commonprefix()

, это возвращает действительный путь.

Доступность: Unix, Windows.

Новое в версии 3.5.

Изменено в версии 3.6: Принимает последовательность объектов, подобных пути.

os.path.commonprefix (список )

Возвращает самый длинный префикс пути (взятый посимвольно), который является префикс всех путей в списке . Если список пуст, вернуть пустую строку ( '' ).

Примечание

Эта функция может возвращать недопустимые пути, поскольку она работает персонаж за раз. Чтобы получить правильный путь, см. общий путь() .

 >>> os.path.commonprefix(['/usr/lib', '/usr/local/lib'])
'/usr/л'
>>> os.path.commonpath(['/usr/lib', '/usr/local/lib'])
'/ уср'
 

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.dirname ( путь )

Вернуть имя каталога pathname path

. Это первый элемент пара возвращается путем передачи path функции split() .

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.exists( путь )

Возврат Истинно , если путь ссылается на существующий путь или открытый дескриптор файла. Возвращает False для битых символических ссылок. На на некоторых платформах эта функция может возвращать False , если разрешение не разрешено выполнять os.stat() в запрошенном файле, даже если путь физически существует.

Изменено в версии 3.3: путь теперь может быть целым числом: True возвращается, если это дескриптор открытого файла, False в противном случае.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.lexists( путь )

Возврат Истинно , если путь ссылается на существующий путь. Возвращает True для битые символические ссылки. Эквивалентно exists() на платформах, отсутствующих os.lstat() .

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.expanduser( путь )

В Unix и Windows верните аргумент с начальным компонентом ~ или ~пользователь заменен домашним каталогом этого пользователя .

В Unix начальные значения ~ заменяются переменной среды HOME . если он установлен; в противном случае домашний каталог текущего пользователя ищется в каталог паролей через встроенный модуль pwd . Начальный

~пользователь ищется непосредственно в каталоге паролей.

В Windows будет использоваться ПРОФИЛЬ ПОЛЬЗОВАТЕЛЯ , если установлено, в противном случае используется комбинация из HOMEPATH и HOMEDRIVE будут использоваться. инициал ~пользователь обрабатывается путем проверки того, что последний компонент каталога текущего домашний каталог пользователя соответствует USERNAME и заменяет его, если это так.

Если расширение не удалось или если путь не начинается с тильды, путь вернулся без изменений.

Изменено в версии 3.6: Принимает объект, подобный пути.

Изменено в версии 3.8: больше не использует HOME в Windows.

os.path.expandvars( путь )

Вернуть аргумент с развернутыми переменными среды. Подстроки формы

$name или ${name} заменяются значением переменной окружения имя . Неверные имена переменных и ссылки на несуществующие переменные оставлен без изменений.

В Windows поддерживаются расширения %name% в дополнение к $name и $ {имя} .

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.getatime ( путь )

Возвращает время последнего доступа к пути . Возвращаемое значение представляет собой число с плавающей запятой, дающее количество секунд с начала эпохи (см. модуль time ). Поднимать OSError , если файл не существует или недоступен.

os.path.getmtime ( путь )

Возвращает время последней модификации пути . Возвращаемое значение представляет собой число с плавающей запятой дающее количество секунд с начала эпохи (см. модуль time ). Поднимите OSError , если файл не существует или недоступен.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.getctime ( путь )

Возвращает ctime системы, которое в некоторых системах (например, Unix) является временем последнее изменение метаданных, а в других (например, в Windows) время создания для путь . Возвращаемое значение представляет собой число, указывающее количество секунд, прошедших с начала эпохи (см. модуль время ). Поднимите OSError , если файл не существует или недоступен.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.getsize( путь )

Возвращает размер в байтах пути . Поднимите OSError , если файл не существует или недоступен.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.isabs( путь )

Возврат Истина , если путь является абсолютным путем. В Unix это означает, что начинается с косой черты, в Windows она начинается с (обратной) косой черты после разрезания с потенциальной буквы диска.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.isfile( путь )

Возврат Истинно , если путь равен существующий обычный файл. Это следует за символическими ссылками, поэтому оба islink() и isfile() могут быть верным для одного и того же пути.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.isdir( путь )

Возврат Истинно , если путь является существующим каталогом . Этот следует символическим ссылкам, поэтому оба islink() и isdir() могут быть истинными для того же пути.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.islink ( путь )

Возврат Истинно , если путь ссылается на существующий каталог запись, которая является символической ссылкой. Всегда Ложь , если символические ссылки не поддерживается средой выполнения Python.

Изменено в версии 3.6: Принимает объект, подобный пути.

os. path.ismount( путь )

Возврат Истина , если путь путь является точкой монтирования : точка в файловая система, в которой смонтирована другая файловая система. В POSIX Функция проверяет, находится ли родительский путь , путь /.. , на другом устройство, чем путь , или путь /.. и путь указывают на одно и то же i-node на том же устройстве — это должно определять точки монтирования для всех Unix и варианты POSIX. Он не может надежно обнаруживать монтирования привязки на та же файловая система. В Windows корневая буква диска и общий ресурс UNC всегда точки монтирования, а для любого другого пути GetVolumePathName вызывается чтобы увидеть, отличается ли он от входного пути.

Новое в версии 3.4: поддержка обнаружения некорневых точек монтирования в Windows.

Изменено в версии 3.6: Принимает объект, подобный пути.

os. path.join ( путь , * пути )

Интеллектуальное соединение одного или нескольких сегментов пути. Возвращаемое значение — это конкатенация путей и всех членов *путей , ровно с одним разделитель каталогов после каждой непустой части, кроме последней. То есть, результат будет заканчиваться разделителем только в том случае, если последняя часть либо пуста, либо заканчивается разделителем. Если сегмент является абсолютным путем (который в Windows требуется и диск, и корень), то все предыдущие сегменты игнорируются и объединение продолжается с сегмента абсолютного пути.

В Windows диск не сбрасывается, когда корневой сегмент пути (например, r'\foo' ). Если сегмент находится на другом диске или является абсолютный путь, все предыдущие сегменты игнорируются, и диск сбрасывается. Примечание что, поскольку для каждого диска существует текущий каталог, os.path.join("c:", "foo") представляет путь относительно текущего каталог на диске C: ( c:foo ), а не c:\foo .

Изменено в версии 3.6: принимает объект, подобный пути, за путь и путь .

os.path.normcase( путь )

Нормализовать регистр имени пути. В Windows преобразовать все символы в путь к нижнему регистру, а также преобразовать прямую косую черту в обратную косую черту. В других операционных системах верните путь без изменений.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.normpath( путь )

Нормализуйте имя пути, удалив избыточные разделители и повысив уровень ссылки, так что A//B , A/B/, A/./B и A/foo/../B все стать A/B . Эта манипуляция со строкой может изменить значение пути который содержит символические ссылки. В Windows он преобразует косую черту в обратные косые черты. Чтобы нормализовать регистр, используйте normcase() .

Примечание

В системах POSIX в соответствии со стандартом IEEE Std 1003. 1, издание 2013 г.; 4.13 Разрешение имени пути, если путь начинается ровно с двух косых черт, первый компонент следующие ведущие символы могут быть интерпретированы в зависимости от реализации образом, хотя более двух ведущих символов должны рассматриваться как одиночный персонаж.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.realpath( путь , * , strict=False )

Вернуть канонический путь к указанному имени файла, исключая любые символические ссылки, встречающиеся в пути (если они поддерживаются система).

Если путь не существует или встречается цикл символической ссылки, а строгий Истинно , Ошибка ОС поднят. Если strict равно False , путь разрешено, насколько это возможно, и любой остаток добавляется без проверки существует ли он.

Примечание

Эта функция эмулирует процедуру операционной системы для создания пути канонический, который немного отличается между Windows и UNIX в отношении как взаимодействуют ссылки и последующие компоненты пути.

API-интерфейсы операционной системы делают пути каноническими по мере необходимости, поэтому обычно необходимо вызвать эту функцию.

Изменено в версии 3.6: Принимает объект, подобный пути.

Изменено в версии 3.8: Символические ссылки и соединения теперь разрешаются в Windows.

Изменено в версии 3.10: Добавлен параметр strict .

os.path.relpath( путь , start=os.curdir )

Вернуть относительный путь к файлу пути либо из текущего каталога, либо из необязательного каталога start . Это вычисление пути: к файловой системе нет доступа для подтверждения существования или характера путь или начало . В Windows ValueError возникает, когда путь и начинаются находятся на разных дисках.

start по умолчанию os.curdir .

Доступность: Unix, Windows.

Изменено в версии 3. 6: Принимает объект, подобный пути.

os.path.samefile( путь2 , путь3 )

Вернуть True , если оба аргумента имени пути относятся к одному и тому же файлу или каталогу. Это определяется номером устройства и номером i-узла и вызывает исключение, если Вызов os.stat() по любому пути завершается ошибкой.

Доступность: Unix, Windows.

Изменено в версии 3.2: Добавлена ​​поддержка Windows.

Изменено в версии 3.4: Windows теперь использует ту же реализацию, что и все другие платформы.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.sameopenfile( fp1 , fp2 )

Возврат Истина , если файловые дескрипторы fp1 и fp2 относятся к одному и тому же файлу.

Доступность: Unix, Windows.

Изменено в версии 3.2: Добавлена ​​поддержка Windows.

Изменено в версии 3. 6: Принимает объект, подобный пути.

os.path.samestat( stat1 , stat2 )

Вернуть True , если кортежи статистики stat1 и stat2 ссылаются на один и тот же файл. Эти структуры могли быть возвращены os.fstat() , os.lstat() или os.stat() . Эта функция реализует базовое сравнение, используемое samefile() и sameopenfile() .

Доступность: Unix, Windows.

Изменено в версии 3.4: Добавлена ​​поддержка Windows.

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.split( путь )

Разделить имя пути путь на пару, (голова, хвост) , где хвост — это последний компонент пути и head — все, что к этому ведет. хвост часть никогда не будет содержать косую черту; если путь заканчивается косой чертой, хвост будет пуст. Если в нет косой черты, путь , заголовок будет пустым. Если путь пуст, как головка , так и хвост пусты. Завершающие косые черты удален из заголовка , если это не корень (только одна или несколько косых черт). В все случаи, join(head, tail) возвращает путь к тому же месту, что и path (но строки могут отличаться). Также см. функции dirname() и имя_базы() .

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.splitdrive ( путь )

Разделить путь путь на пару (диск, хвост) , где диск либо точка монтирования или пустая строка. В системах, не использующих диск технические характеристики, диск всегда будет пустой строкой. Во всех случаях диск + хвост будет таким же, как путь .

В Windows разделяет путь на диск/UNC точку доступа и относительный путь.

Если путь содержит букву диска, диск будет содержать все до двоеточия включительно:

 >>> раздельный диск("c:/dir")
("с:", "/дир")
 

Если путь содержит путь UNC, диск будет содержать имя хоста и разделить, до, но не включая четвертый разделитель:

 >>> splitdrive("//хост/компьютер/каталог")
("//хост/компьютер", "/каталог")
 

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.splitext( путь )

Разделить путь путь на пару (root, ext) таким образом, чтобы root + ext == path , а расширение ext пусто или начинается с точки и содержит в самый один период.

Если путь не содержит расширения, доб будет '' :

 >>> раздельный текст('бар')
('бар', '')
 

Если путь содержит расширение, то ext будет установлено на это расширение, включая ведущий период. Обратите внимание, что предыдущие периоды будут игнорироваться:

 >>> splitext('foo. bar.exe')
('foo.bar', '.exe')
>>> splitext('/foo/bar.exe')
('/foo/bar', '.exe')
 

Начальные периоды последнего компонента пути считаются быть частью корня:

 >>> раздельный текст('.cshrc')
('.cshrc', '')
>>> разделенный текст('/foo/....jpg')
('/foo/....jpg', '')
 

Изменено в версии 3.6: Принимает объект, подобный пути.

os.path.supports_unicode_filenames

True , если в качестве имен файлов можно использовать произвольные строки Unicode (с ограничениями навязанная файловой системой).

Как писать или печатать в файл в Python

Нужно печатать в файл в Python? Сегодня мы узнаем, как легко начать писать в файлы. Мы рассмотрим создание новых файлов, добавление существующих файлов и перезапись существующих файлов.

Открытие файла для записи в Python

Возможно, вы уже знаете, как печатать на экране в Python, но вы можете не знать, как печатать в файл. К счастью, как и у большинства новичков в программировании на Python, синтаксис записи файлов прост, удобочитаем и понятен.

Связано: Как создать, импортировать и повторно использовать собственный модуль в Python

Имея это в виду, давайте начнем.

Создание и запись в новый файл в Python

Чтобы создать новый файл в Python и открыть его для редактирования, используйте встроенный open() и укажите имя файла, за которым следует параметр x .

 f = open("testfile.txt", "x") 

При использовании параметра «x» вы получите сообщение об ошибке, если указанное вами имя файла уже существует.

В случае успеха теперь вы можете записать в файл, используя метод write() .

 f.write("Привет, мир!") 

Каждая строка текста, которую вы «пишете()», будет заканчиваться символом конца строки, поэтому каждая дополнительная строка будет записываться с новой строки.

Рекомендуется всегда закрывать любой файл, который вы открываете, используя метод close() . В противном случае ваш файл может не сохраниться на диск.

 f.close() 

Вы также можете создавать и записывать в файл на Python с меньшим количеством строк, используя ключевое слово с .

 с open("testfile.txt", "x") as f: 
f.write("Hello, world!")

Этот подход рекомендуется, потому что набор «with» автоматически закроет ваш файл после завершения, поэтому вам никогда не придется помнить, чтобы закрыть его самостоятельно.

После записи файла его можно прочитать, открыв его с параметром r и вызвав метод read() .

 с open("testfile.txt", "r") as f: 
print(f.read())

Запись в существующий файл в Python

Если файл, который вы хотите записать, уже существует, и вы хотите добавить к нему дополнительные строки, вам нужно будет открыть его, используя параметр a для «добавить».

 с открытым ("testfile.txt", "a") как f: 
f.write("Я дополнительная строка")

Все, что вы пишете после открытия с параметром «a», будет добавлено с новой строкой.

Этот код также предполагает, что ваш файл находится в том же каталоге, в котором работает ваш скрипт Python. Если он находится в другом каталоге, вам нужно будет указать его путь.

Узнайте больше: Как получить текущий каталог в Python

Перезаписать существующий файл в Python

Если ваш файл уже существует, но вы хотите, чтобы он был перезаписан, а не добавлен, вы можете сделать это, открыв файл с помощью w параметр.

 с open("testfile.txt", "w") as f: 
f.write("Hello, world!")

Независимо от того, что было написано в testfile.txt, вывод будет «Hello, world !» когда вы это читаете.

Связано: Как запустить скрипт Python

Устранение неполадок при записи файлов на Python

Если текст, который вы печатаете в файл, путается или читается неправильно, убедитесь, что вы всегда открываете файл с правильной кодировкой.

 с открытым ("testfile.txt", "w", encoding="utf8") как f: 

Большинство текстовых файлов в наши дни используют кодировку UTF-8, но некоторые другие распространенные кодировки — это ISO-8859 (iso-8859-1), UTF-16 (utf16) или Windows-1252 (cp1252).

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *