Что делает python3 открытым режимом "x"?

Что делает новый режим открытого файла "x" в python 3?

вот документ python 3:

'r': открыть для чтения (по умолчанию)

'w': открыть для записи, сначала обрезая файл

'x': открыт для исключительного создания, если файл уже существует

'a': открыт для записи, добавляя к концу файла, если он существует

'b': двоичный режим

't': текстовый режим (по умолчанию)

'+': открыть файл диска для обновления (чтение и запись)

'U': универсальный режим новых строк (устаревший)

Что означает "эксклюзивное создание"?

Я тестирую режим "x" и обнаруживаю:

  • Он не может использоваться с "r/w/a"
  • "x" записывается только. "x +" может писать и читать
  • Файл не должен существовать до open
  • Файл будет создан после open

Итак, "x" аналогично "w". Но для "x" , , если файл существует, поднимите FileExistsError. Для "w" он просто создаст новый файл/усекает существующий файл.

Я прав? Разве это единственная разница?

Ответ 1

Как уже сказал @Martjin, вы уже ответили на свой вопрос. Я бы только усилил объяснение в руководстве, чтобы лучше понять текст

'x': открыт для исключительного создания, если файл уже существует

Когда вы укажете exclusive creation, это явно означает, что вы должны использовать этот режим для исключительно создания файла. Необходимость в этом необходима, если вы случайно не усекаете/не добавляете существующий файл ни с одним из режимов w или a.

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

В этом режиме ваш код будет просто записан как

try:
    with open("fname", "x") as fout:
        #Work with your open file
except FileExistsError:
    # Your error handling goes here

Раньше, хотя ваш код мог быть написан как

import os.path
if os.path.isfile(fname):
    # Your error handling goes here
else:
    with open("fname", "w") as fout:
        # Work with your open file

Ответ 2

Да, это в основном это.

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

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

Ответ 3

Проще говоря, открытие файла в режиме 'x' означает:

Атомно сделать: (проверить, если существует и создать файл)