Файлы
Проще говоря, встроенная функция open создает объект файла, который обеспечивает связь с файлом, размещенным в компьютере. После вызова функции open можно выполнять операции чтения и записи во внешний файл, используя методы полученного объекта.
Операция - Интерпретация
output = open(r’C:\spam’, ‘w’) - Открывает файл для записи (‘w’ означает write – запись)
input = open(‘data’, ‘r’) - Открывает файл для чтения (‘r’ означает read – чтение)
input = open(‘data’) - То же самое, что и в предыдущей строке
(режим ‘r’ используется по умолчанию)
aString = input.read() - Чтение файла целиком в единственную строку
aString = input.read(N) - Чтение следующих N символов (или байтов) в строку
aString = input.readline() - Чтение следующей текстовой строки
(включая символ конца строки) в строку
aList = input.readlines() - Чтение файла целиком в список строк
(включая символ конца строки)
output.write(aString) - Запись строки символов (или байтов) в файл
output.writelines(aList) - Запись всех строк из списка в файл
output.close() - Закрытие файла вручную (выполняется по окончании работы с файлом)
output.flush() - Выталкивает выходные буферы на диск, файл остается открытым
anyFile.seek(N) - Изменяет текущую позицию в файле для
следующей операции, смещая ее на N байтов от начала файла.
for line in open(‘data’): - Итерации по файлу, построчное чтение
операции над line
open(‘f.txt’, - Файлы с текстом Юникода в Python 3.0 (строки типа str)
encoding=’latin-1’)
open(‘f.bin’, ‘rb’) - Файлы с двоичными данными в Python 3.0
Чтобы открыть файл, программа должна вызвать функцию open, передав ей имя внешнего файла и режим работы. Обычно в качестве режима использует-
ся строка ‘r’, когда файл открывается для чтения (по умолчанию), ‘w’ – когда
файл открывается для записи или ‘a’ – когда файл открывается на запись в ко-
нец.
Использование файлов
Как только будет получен объект файла, вы можете вызывать его методы для
выполнения операций чтения или записи. В любом случае содержимое файла
в программах на языке Python принимает форму строк – операция чтения воз-
вращает текст в строках, и метод записи принимает информацию в виде строк.
Файлы в действии
>>> myfile = open(‘myfile.txt’, ‘w’) # Открывает файл (создает/очищает)
>>> myfile.write(‘hello text file\n’) # Записывает строку текста
16
>>> myfile.write(‘goodbye text file\n’)
18
>>> myfile.close() # Выталкивает выходные буферы на диск
>>> myfile = open(‘myfile.txt’) # Открывает файл: ‘r’ – по умолчанию
>>> myfile.readline() # Читает строку
‘hello text file\n’
>>> myfile.readline()
‘goodbye text file\n’
>>> myfile.readline() # Пустая строка: конец файла
Обратите внимание, что в Python 3.0 метод write возвращает количество запи-
санных символов – в версии 2.6 этого не происходит, поэтому в интерактив-
ном сеансе вы не увидите эти числа.
Если необходимо вывести содержимое файла, обеспечив правильную интер-
претацию символов конца строки, его следует прочитать в строку целиком,
с помощью метода read, и вывести:
>>> open(‘myfile.txt’).read() # Прочитать файл целиком в строку
‘hello text file\ngoodbye text file\n’
>>> print(open(‘myfile.txt’).read()) # Более дружественная
форма отображения
hello text file
goodbye text file
А если необходимо просмотреть содержимое файла строку за строкой, лучшим
выбором будет итератор файла:
>>> for line in open(‘myfile’): # Используйте итераторы, а
не методы чтения
... print(line, end=’’)
...
hello text file
goodbye text file
В этом случае функцией open создается временный объект файла, содержимое
которого автоматически будет читаться итератором и возвращаться по одной
строке в каждой итерации цикла.
Сохранение и интерпретация объектов Python в файлах
Следующий пример записывает различные объекты в текстовый файл.
>>> X, Y, Z = 43, 44, 45 # Объекты языка Python должны
>>> S = ‘Spam’ # записываться в файл только
в виде строк
>>> D = {‘a’: 1, ‘b’: 2}
>>> L = [1, 2, 3]
>>>
>>> F = open(‘datafile.txt’, ‘w’) # Создает файл для записи
>>> F.write(S + ‘\n’) # Строки завершаются символом \n
>>> F.write(‘%s,%s,%s\n’ % (X, Y, Z))# Преобразует числа в строки
>>> F.write(str(L) + ‘$’ + str(D) + ‘\n’) # Преобразует
и разделяет символом $
>>> F.close()
Использование инструкции print:
>>> chars = open(‘datafile.txt’).read() # Отображение строки
>>> chars # в неформатированном виде
“Spam\n43,44,45\n[1, 2, 3]${‘a’: 1, ‘b’: 2}\n”
>>> print(chars) # Удобочитаемое представление
Spam
43,44,45
[1, 2, 3]${‘a’: 1, ‘b’: 2}
Теперь нам необходимо выполнить обратные преобразования, чтобы получить
из строк в текстовом файле действительные объекты языка Python.
>>> F = open(‘datafile.txt’) # Открыть файл снова
>>> line = F.readline() # Прочитать одну строку
>>> line
‘Spam\n’
>>> line.rstrip() # Удалить символ конца строки
‘Spam’
Пока что мы прочитали ту часть файла, которая содержит строку. Теперь про-
читаем следующий блок, в котором содержатся числа, и выполним разбор это-
го блока (то есть извлечем объекты):
>>> line = F.readline() # Следующая строка из файла
>>> line # Это - строка
‘43,44,45\n’
>>> parts = line.split(‘,’) # Разбить на подстроки по запятым
>>> parts
[‘43’, ‘44’, ‘45\n’]
Здесь был использован метод split, чтобы разбить строку на части по запятым, которые играют роль символов-разделителей, – в результате мы получили список строк, каждая из которых содержит отдельное число. Теперь нам необходимо преобразовать эти строки в целые числа, чтобы можно было выполнять математические операции над ними:
>>> int(parts[1]) # Преобразовать строку в целое число
44
>>> numbers = [int(P) for P in parts] # Преобразовать весь список
>>> numbers
[43, 44, 45]
Как мы уже знаем, функция int преобразует строку цифр в объект целого числа.
Наконец, чтобы преобразовать список и словарь в третьей строке файла, можно воспользоваться встроенной функцией eval, которая интерпретирует строку как программный код на языке Python:
>>> line = F.readline()
>>> line
“[1, 2, 3]${‘a’: 1, ‘b’: 2}\n”
>>> parts = line.split(‘$’) # Разбить на строки по символу $
>>> parts
[‘[1, 2, 3]’, “{‘a’: 1, ‘b’: 2}\n”]
>>> eval(parts[0]) # Преобразовать строку в объект
[1, 2, 3]
>>> objects = [eval(P) for P in parts] # То же самое для всех строк в списке
>>> objects
[[1, 2, 3], {‘a’: 1, ‘b’: 2}]
Поскольку теперь все данные представляют собой список обычных объектов, а не строк, мы сможем применять к ним операции списков и словарей.
А как после открытия mp3 файла закрыть его через 5 сек?
ОтветитьУдалитьimport os
import time
s=os.startfile(r'C:\Linkin Park.mp3')
time.sleep(5)
s.close() - не работает(((
Отличная статья. Один вопрос. Как реализуется запись из фала в 2-ух мерный массив?
ОтветитьУдалитькупить семена адениума
ОтветитьУдалитьЭкзотические растения свежиесемена адениума и другие комнатные цветы.
еще