Работа с файловой системой

Объекты типа 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/

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: