Объекты типа file предназначены для работы с внешними данными. Файловые объекты должны поддерживать основные методы: read(), write(), readline(), readlines(), seek(), tell(), close().
Встроенная функция
open(file, mode=’r/w/x/a/b/t/+’, buffering=None, encoding=None, errors=None, newline=None, closefd=True) # Открывает файл и возвращает поток.
‘r’ — для чтения (выступает значением по умолчанию).
‘w’ —для записи, содержимое файла удаляется, если файла с таким именем нет, то он автоматически создается.
‘x’ — открытие на запись, если файл не существует, иначе исключение.
‘a’ — дозаписывание информации в конец существующего файла.
‘b’ — открытие в двоичном режиме.
‘t’ — открытие в текстовом режиме (выступает значением по умолчанию).
‘+’ — открытие на чтение и запись.
Кроме того, вышеперечисленные режимы могут быть объеденены. По умолчанию режим ‘rt’. Если вы хотите произвести чтение в двоичном режиме, то укажите ‘rb’.
Аргумент encoding задает кодировку и используется только в текстовом режиме чтения файла.
Пример копирования файла:
f = open("inp.txt", "r")
|
|
g = open("outp.txt", "w")
for line in f.readlines():
g.write(line)
g.close()
f.close()
Если в аргументе метода read ничего не указать, то он выведет всю информацию. Но можно обращаться к файлу с целью побитового вывода. (вспоминаем, что кириллица занимает по 2 байта на символ). Итак, пробуем вывести первые 6 букв:
>>> f = open('file.txt', 'r')
>>> print f.read(12)
Еще один способ используемый для этого цикл.
f = open('file.txt', 'r')
for line in f:
print line
f.close()
>>>Привет! Я - файл:)
Работы с файлом, его нужно обязательно закрыть. Используем для этого метод close().
Записываем информацию в файл:
Итак, открываем файл в режиме запись ‘w’, при этом все содержимое файла удалиться. И записываем в него слово ‘string’ с помощью метода write():
f = open('file.txt', 'w')
f.write('string1\n') #\n - перенос строки
f.write('sting2')
f.close()
# Проверяем, записались ли значения
f = open('file.txt', 'r')
print f.read()
f.close()
Результат:
string1
sting2
f = open('file.txt', 'w')
f.write('abvgd\n') #\n - перенос строки
f.seek(3) #переход на три байта
f.write('0000n') # вставляем после 3 символа и стираем все остальное
f.write('hello')
f.close()
# читаем значение построчно
f = open('file.txt', 'r')
print f.readline()
f.close()
# читаем ВСЕ строки
f = open('file.txt', 'r')
print f.readlines()
f.close()
Результат:
abv0000
['abv0000n', 'hello']
Вносим изменения в файл, не затронув при этом старые данные:
f = open('file.txt', 'w')
f.writelines('test')
f.close()
f = open('file.txt', 'r')
print f.read()
f.close()
Результат:
abv0000
['abv0000n', 'hello']
test
Python имеет встроенные библиотеки. В этом примере сохраним в бинарном файле структуру списка, прочитать ее и сохраним строку в текстовом файле. Для преобразования структуры данных используем стандартную библиотеку «pickle»
Import pickle
mylist = ["Это", "-", 4, 13327]
|
|
# Откроем файл C:\b.dat для записи. Символ «r» предотвращает замену
# специальных сиволов (таких как \n, \t, \b и др.).
mf = file (r"C: \b.dat", "w")
pickle.dump(mylist, mf)
mf.close()
mf = file(r"C:\text.txt", "w")
mf.write("Это - a sample string")
myfile.close()
myfile = file (r"C:\text.txt")
print myfile.read()
'This is a sample string'
myfile.close()
# Открываем файл для чтения
myfile = file(r"C:\binary.dat")
loadedlist = pickle.load(myfile)
myfile.close()
print loadedlist
['This', 'is', 4, 13327]
http://pythonworld.ru/samouchitel-python
https://habrahabr.ru/post/29778/