Что делает 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'
означает:
Атомно сделать: (проверить, если существует и создать файл)