Режимы 'r +', 'w +' и 'a +' открывают файл для обновления (обратите внимание, что 'w +' усекает файл). Добавьте 'b' к режиму, чтобы открыть файл в двоичном режиме, в системах, которые различают двоичные и текстовые файлы; в системах, которые не имеют такого различия, добавление 'b' не имеет эффекта.
w+ : открывает файл как для записи, так и для чтения. Перезаписывает существующий файл, если файл существует. Если файл не существует, создает новый файл для чтения и записи.
Но, как прочитать файл, открытый с помощью w+?
Переведено автоматически
Ответ 1
Вот список различных режимов открытия файла:
r
Открывает файл только для чтения. Указатель на файл размещается в начале файла. Это режим по умолчанию.
rb
Открывает файл для чтения только в двоичном формате. Указатель на файл размещается в начале файла. Это режим по умолчанию.
r +
Открывает файл как для чтения, так и для записи. Указатель на файл будет находиться в начале файла.
rb +
Открывает файл как для чтения, так и для записи в двоичном формате. Указатель на файл будет находиться в начале файла.
w
Открывает файл только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создает новый файл для записи.
wb
Открывает файл для записи только в двоичном формате. Перезаписывает файл, если файл существует. Если файл не существует, создает новый файл для записи.
w+
Открывает файл как для записи, так и для чтения. Перезаписывает существующий файл, если файл существует. Если файл не существует, создает новый файл для чтения и записи.
wb +
Открывает файл как для записи, так и для чтения в двоичном формате. Перезаписывает существующий файл, если файл существует. Если файл не существует, создает новый файл для чтения и записи.
a
Открывает файл для добавления. Указатель на файл находится в конце файла, если файл существует. То есть файл находится в режиме добавления. Если файл не существует, создается новый файл для записи.
ab
Открывает файл для добавления в двоичном формате. Указатель на файл находится в конце файла, если файл существует. То есть файл находится в режиме добавления. Если файл не существует, создается новый файл для записи.
a +
Открывает файл как для добавления, так и для чтения. Указатель на файл находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, создается новый файл для чтения и записи.
ab+
Открывает файл как для добавления, так и для чтения в двоичном формате. Указатель на файл находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, создается новый файл для чтения и записи.
Ответ 2
Все файловые режимы в Python
r для чтения
r+ открывается для чтения и записи (невозможно обрезать файл)
w для записи
w+ для записи и чтения (может усекать файл)
rb для чтения двоичного файла. Указатель на файл размещается в начале файла.
rb+ чтение или запись двоичного файла
wb+ запись двоичного файла
a+ открывается для добавления
ab+ Открывает файл как для добавления, так и для чтения в двоичном формате. Указатель на файл находится в конце файла, если файл существует. Файл открывается в режиме добавления.
x открыть для эксклюзивного создания, не удается, если файл уже существует (Python 3)
Ответ 3
Допустим, вы открываете файл с помощью with инструкции, как и должно быть. Затем вы должны сделать что-то вроде этого для чтения из вашего файла:
withopen('somefile.txt', 'w+') as f: # Note that f has now been truncated to 0 bytes, so you'll only # be able to read data that you write after this point f.write('somedata\n') f.seek(0) # Important: return to the top of the file before reading, otherwise you'll just read an empty string data = f.read() # Returns 'somedata\n'
Обратите внимание на f.seek(0) -- если вы забудете это, f.read() вызов попытается прочитать с конца файла и вернет пустую строку.
Ответ 4
r для чтения
w для записи
r+ для чтения / записи без удаления исходного содержимого, если файл существует, в противном случае возникает исключение
w+ для удаления исходного содержимого затем прочитайте / запишите, если файл существует, в противном случае создайте файл
Например,
>>> withopen("file1.txt", "w") as f: ... f.write("ab\n") ... >>> withopen("file1.txt", "w+") as f: ... f.write("c") ...
$ cat file1.txt c$
>>> withopen("file2.txt", "r+") as f: ... f.write("ab\n") ... Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 2] No such file or directory: 'file2.txt'
>>> withopen("file2.txt", "w") as f: ... f.write("ab\n") ... >>> withopen("file2.txt", "r+") as f: ... f.write("c") ...