Открыть файл можно несколькими способами: двойным щелчком по значку, через контекстное меню (пункты «Открыть» и «Открыть с помощью»), клавишей Enter на выделенном файле (в Windows и Linux), командой «Файл — Открыть» внутри программы, перетаскиванием в окно программы и командой в терминале. В программировании файл открывает сам код — в Python для этого служит функция open().
Содержание
За словом «открыть» стоят три разных действия, и их полезно не смешивать:
- открыть документ — система подбирает программу по расширению файла и передает ей файл;
- запустить программу — файл сам является программой (
.exe, скрипт), и система выполняет его; - открыть файл в коде — программа просит у операционной системы доступ к содержимому, чтобы читать или записывать данные.
Ниже — все способы по порядку, затем разбор ситуации «файл не открывается» и открытие файла в Python. Команды терминала и меню описаны для Windows 11, macOS 26 и Ubuntu 24.04; код проверен на Python 3.14.7 30 сентября 2026 года.
Способы открыть файл в графическом интерфейсе
| Способ | Что происходит | Когда удобен |
|---|---|---|
| Двойной щелчок левой кнопкой мыши по значку | Файл открывается в программе по умолчанию для его расширения | Обычный случай |
| Выделить файл и нажать Enter (Windows, большинство файловых менеджеров Linux) | То же, что двойной щелчок | Работа с клавиатуры |
| Правая кнопка — «Открыть» | То же, что двойной щелчок | Когда двойной щелчок настроен иначе |
| Правая кнопка — «Открыть с помощью» | Вы сами выбираете программу из списка | Нужна не та программа, что по умолчанию |
| Меню программы «Файл — Открыть» (обычно Ctrl+O, в macOS Cmd+O) | Программа показывает окно выбора файла | Программа уже запущена |
| Перетащить файл в окно программы | Программа открывает переданный файл | Файл и окно рядом на экране |
Два уточнения, на которых часто ошибаются. В macOS клавиша Enter в Finder не открывает файл, а включает переименование; открыть выделенный файл можно сочетанием Cmd+O или Cmd+стрелка вниз. А пункт «Открыть с помощью» в Finder называется «Открыть в приложении».
Программа по умолчанию определяется расширением — частью имени после последней точки: .docx, .pdf, .txt. Если расширение системе незнакомо, Windows сама покажет окно выбора приложения. Назначить программу постоянно можно там же: «Открыть с помощью» — «Выбрать другое приложение» — отметить «Всегда».
Исполняемые файлы открываются иначе: двойной щелчок не показывает содержимое, а запускает программу. В Windows у них есть еще пункт контекстного меню «Запуск от имени администратора» — он дает программе повышенные права, поэтому использовать его стоит только для программ из надежного источника.
Как открыть файл из командной строки
В терминале есть два разных действия: передать файл программе по умолчанию (как двойной щелчок) и вывести содержимое текстового файла прямо в окно терминала.
| Система | Открыть в программе по умолчанию | Показать текст в терминале |
|---|---|---|
| Windows, cmd | start "" "C:\Users\anna\report.pdf" |
type notes.txt |
| Windows, PowerShell | Invoke-Item "C:\Users\anna\report.pdf" |
Get-Content notes.txt |
| macOS | open report.pdf |
cat notes.txt |
| Linux с графической оболочкой | xdg-open report.pdf |
cat notes.txt или less notes.txt |
Пустые кавычки после start в cmd нужны потому, что первый аргумент в кавычках команда считает заголовком окна, а не путем. В macOS можно выбрать программу явно: open -a TextEdit notes.txt. Команда xdg-open работает только там, где есть графическая среда: на сервере без рабочего стола файл смотрят через cat, less или редактор.
Если файла по указанному пути нет, система сообщает об этом прямо. Вот ответы macOS (команда open) и Ubuntu (команда cat) на несуществующий nofile.txt:
The file /Users/anna/nofile.txt does not exist.
cat: nofile.txt: No such file or directory
Относительный путь вроде notes.txt ищется от текущего каталога терминала, а не от папки, где вы видите файл в проводнике. Как устроены абсолютные и относительные пути, разобрано в статье «Файлы и пути к ним», а запуск программ из cmd — в статье про командную строку Windows.
Если файл не открывается
Диагностика идет от симптома.
| Симптом | Вероятная причина | Что делать |
|---|---|---|
| Система спрашивает, чем открыть | Нет программы для этого расширения | Установить подходящую программу или выбрать ее в «Открыть с помощью» |
| Открывается не в той программе | Другая программа назначена по умолчанию | «Открыть с помощью» — выбрать нужную и отметить «Всегда» |
| «Файл не найден» | Файл перемещен, удален или ярлык устарел | Найти файл поиском по имени, проверить путь |
«Отказано в доступе», Permission denied |
У вашей учетной записи нет права на чтение | Обратиться к владельцу файла или администратору; не менять права массово |
| «Файл занят другим процессом» | Файл открыт в другой программе | Закрыть эту программу и повторить |
| Вместо текста непонятные символы | Текст открыт не в той кодировке или файл не текстовый | Выбрать кодировку в редакторе (UTF-8, Windows-1251) |
| Программа сообщает, что файл поврежден | Файл скачан не полностью или расширение не соответствует содержимому | Скачать заново; не переименовывать расширение наугад |
Смена расширения вручную формат не меняет: photo.jpg, переименованный в photo.pdf, останется картинкой, просто система передаст его не той программе.
Осторожно с файлами из почты и мессенджеров
Двойной щелчок по исполняемому файлу запускает код с вашими правами. Вложение может маскироваться двойным расширением: invoice.pdf.exe при скрытых расширениях выглядит как invoice.pdf. Три привычки снижают риск, хотя полной защиты не дают:
- Включить показ расширений: в проводнике Windows 11 — «Просмотреть» — «Показать» — «Расширения имен файлов».
- Не запускать
.exe,.scr,.bat,.js,.lnkиз писем и чатов, а в офисных документах не включать макросы, если вы их не ждали. - Неожиданное вложение сначала проверить антивирусом и спросить отправителя по другому каналу связи, он ли это прислал.
Открытие файла в коде: функция open() в Python
Программа не щелкает мышью, она вызывает функцию. В Python это open(путь, режим, encoding=...): функция возвращает файловый объект, через который читают и пишут данные. Пример ниже создает файл во временном каталоге, дописывает строку, читает текст, читает байты и удаляет за собой все созданное.
from pathlib import Path
import tempfile
workdir = Path(tempfile.mkdtemp(prefix="open-demo-"))
path = workdir / "example.txt"
with open(path, "w", encoding="utf-8") as f:
f.write("Первая строка\n")
with open(path, "a", encoding="utf-8") as f:
f.write("Вторая строка\n")
with open(path, "r", encoding="utf-8") as f:
for number, line in enumerate(f, start=1):
print(number, line.rstrip("\n"))
with open(path, "rb") as f:
print(f.read(8))
try:
with open(path, "x", encoding="utf-8") as f:
f.write("не запишется")
except FileExistsError as error:
print("x:", type(error).__name__)
path.unlink()
workdir.rmdir()
Вывод программы:
1 Первая строка
2 Вторая строка
b'\xd0\x9f\xd0\xb5\xd1\x80\xd0\xb2'
x: FileExistsError
Что здесь важно. Конструкция with закрывает файл сама, даже если внутри блока произошла ошибка; без нее пришлось бы вызывать f.close() вручную. Режим "rb" вернул не буквы, а байты: восемь байт — это первые четыре буквы слова «Первая», потому что в UTF-8 русская буква занимает два байта. Режим "x" отказался открывать уже существующий файл.
Режимы открытия
| Режим | Что делает | Если файла нет | Если файл есть |
|---|---|---|---|
"r" (по умолчанию) |
Чтение | Ошибка FileNotFoundError |
Читает с начала |
"w" |
Запись | Создает файл | Стирает содержимое сразу при открытии |
"a" |
Дописывание в конец | Создает файл | Сохраняет содержимое, пишет в конец |
"x" |
Создание нового файла | Создает файл | Ошибка FileExistsError |
"r+" |
Чтение и запись | Ошибка FileNotFoundError |
Не стирает, пишет поверх с начала |
К любому режиму добавляется t (текст, по умолчанию) или b (байты): "rb", "wb". В текстовом режиме Python превращает байты в строки по кодировке, в двоичном отдает байты как есть — так открывают картинки, архивы и любые нетекстовые форматы. Деление условное: текстовый файл — это те же байты, просто их договорились читать как символы.
Самая дорогая ошибка новичка — режим "w" для файла с нужными данными: содержимое пропадает в момент открытия, еще до первой записи. Если файл не должен перезаписываться, используйте "x" или "a".
Зачем указывать encoding
Если encoding не указать, Python 3.14 и более ранние берут кодировку из настроек системы: в Linux и macOS это обычно UTF-8, в русской Windows — чаще всего cp1251. Один и тот же скрипт на разных машинах прочитает файл по-разному. В Python 3.15 (стабильный выпуск — октябрь 2026 года) умолчанием становится UTF-8. Явное encoding="utf-8" делает поведение одинаковым на любой версии. Файл, сохраненный в cp1251, при чтении как UTF-8 дает ошибку:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcf in position 0: invalid continuation byte
Исправление — назвать настоящую кодировку файла: open(path, encoding="cp1251").
Ошибка при открытии и ее обработка
Неверный вариант: код рассчитывает, что файл report.txt лежит в текущем каталоге.
with open("report.txt", encoding="utf-8") as f:
print(f.read())
Фактический результат, когда файла нет:
FileNotFoundError: [Errno 2] No such file or directory: 'report.txt'
Исправление: перехватить типовые причины и показать полный путь, по которому Python искал файл.
from pathlib import Path
path = Path("report.txt")
try:
with open(path, encoding="utf-8") as f:
print(f.read())
except FileNotFoundError:
print(f"Файла нет: {path.resolve()}")
except PermissionError:
print(f"Нет прав на чтение: {path.resolve()}")
except IsADirectoryError:
print(f"Это каталог, а не файл: {path.resolve()}")
except UnicodeDecodeError as error:
print(f"Файл не в UTF-8: {error.reason}, байт {error.start}")
При запуске из каталога /w без файла программа печатает Файла нет: /w/report.txt — по полному пути сразу видно, что скрипт запущен не из той папки. Ветка IsADirectoryError срабатывает в Linux и macOS; Windows на попытку открыть каталог отвечает PermissionError. Это учебная обработка: если путь к файлу приходит от пользователя (форма на сайте, аргумент запроса), в рабочем коде дополнительно проверяют, что он не выходит за пределы разрешенного каталога.
Выводы
- Каким образом можно открыть файл в ОС: двойной щелчок, Enter, контекстное меню «Открыть» и «Открыть с помощью», команда «Файл — Открыть» в программе, перетаскивание и команда терминала.
- Программу для двойного щелчка система выбирает по расширению; переименование расширения формат не меняет.
- В терминале файл открывают
start(cmd),Invoke-Item(PowerShell),open(macOS) иxdg-open(Linux с графической оболочкой). - Если файл не открывается, причина почти всегда одна из четырех: нет программы, неверный путь, нет прав или не та кодировка.
- В Python файл открывает
open()внутриwith; режим"w"стирает содержимое, аencoding="utf-8"стоит указывать явно.
Где применяется / связь с практикой
Освойте тему на практике
Вопросы «файл не открывается», «открывается не тем» и «отказано в доступе» — ежедневная работа первой линии технической поддержки: специалист по симптому определяет, дело в сопоставлении программы, в пути, в правах или в самом файле. Эти навыки вместе с основами Windows, Linux и сетей системно разбираются на курсе «Специалист по поддержке пользователей в IT».
Освойте тему на практике
Познакомиться с форматом занятий и преподавателями можно на открытых уроках Otus.
FAQ
Как открыть файл без расширения?
Через «Открыть с помощью» выбрать программу вручную; если формат неизвестен, начать с текстового редактора — по первым символам часто видно, что это за файл. В Linux и macOS тип по содержимому подсказывает команда file имя_файла.
Можно ли открыть один файл в двух программах одновременно?
На чтение — обычно да. На запись зависит от программы: офисные редакторы Windows блокируют документ, и вторая программа получит его только для чтения или сообщение, что файл занят.
Нужно ли закрывать файл в Python, если программа и так завершится?
Нужно: пока файл не закрыт, часть записанных данных может оставаться в буфере и не попасть на диск, а в Windows открытый файл мешает его удалить или переименовать. Блок with решает это автоматически.



