Мы обсудили в прошлой статье. В данной статье мы обсудим способы записи данных в файл. Чтобы не было ошибки из за доступа, убедитесь, что в папке где вы хотите выполнить изменения или сам файл имеют права 777 .
Чтобы не соскучится, мы покажем несколько способов внесения данных в файл и наглядно увидим результат . Чтобы открыть файл для записи или же создать его, мы воспользуемся функцией open(filename, mod) и в качестве второго параметрам mod укажем значение w т.е. (write) запись. Если файл с указанным названием filename не существует - он будет создан.
После выполнения данного скрипта, по указанному нами пути будет создан новый файл snake.txt если файл не был создан то нужно проверить права доступа на папку. Стоит учесть, что если файл snake.txt существовал ранее, то после открытия его функцией open() и мод W, тогда содержимое файла удаляется. Если вы хотите добавить что-то в конце, то следует использовать мод "a+".
Предположим, что мы создали новый файл и хотим в него внести некий текст, для этого воспользуемся методом write().
# -*- coding: utf-8 -*- my_file = open("snake.txt", "w") text_for_file = "Some text here..." my_file.write(text_for_file) my_file.close()
Можно выполнять запись и изменения в любые типы файлов с которыми хотите работать. Ограничение на манипуляцию файлов в зависимости от его типа нету, данные функции имеют полный контроль над файлами, конечно, если администратор выделил файлу нужные права.
Если требуется замена данных из файла на определенной его строке , то для этого понадобятся методы readlines () и writelines (). Нам предстоит открыть построчно файл, заменить нужную строку и сохранить файл в такой очередности в которой находятся значения в списке.
Изначальный файл snake.txt
Я Программа написанная в Python 3
Заменяем 5-ю строку со значением "Python" на значение "Питон"
# -*- coding: utf-8 -*- # Открываем файл только для чтения f = open("snake.txt", "r") lines = f.readlines() lines = "Питон" + "\n" # Закрываем файл f.close() # Открываем файл для записи save_changes = open("snake.txt", "w") # Сохраняем список строк save_changes.writelines(lines) # Закрываем файл save_changes.close()
Финальный вид файла snake.txt
Я Программа написанная в Питон 3
Как осуществить , мы обсуждали в прошлой статье. Но, можно копировать файлы без использования каких либо библиотек или модулей . В примере мы будем копировать изображения из одной папки в другую.
# -*- coding: utf-8 -*- # Открываем файл только для чтения old_image = open("temp/pro.jpeg", "r").read() # Создаем новый файл new_image = open("new_pro.jpeg", "w") # Сохраняем данные старой картинки в новую new_image.write(old_image) new_image.close()
По дороге к работе где вы отлично программируйте на пайтоне случилось непредсказуемое и вы попали в небольшое дтп и некому вытащить вашу машину из беды? Рекомендую отличный эвакуатор который вытащит из любой ситуации вашего железного коня, может даже и подбросит до работы.
В этой главе рассматриваются все основные функции ввода / вывода, доступные в Python 3. Для получения дополнительных функций, пожалуйста, обратитесь к стандартной документации Python.
Самый простой способ получения вывода использует print заявление, в котором вы можете передать ноль или более выражений, разделенных запятыми. Эта функция преобразует выражения Проходите в строку и записывает результат в стандартный вывод следующим образом -
#!/usr/bin/python3 print ("Python is really a great language,", "isn"t it?")
Это дает следующий результат на стандартном экране -
Python is really a great language, isn"t it?
Python 2 имеет две встроенные функции для чтения данных из стандартного ввода, которая по умолчанию поставляется с клавиатуры. Эти функции input() и raw_input()
В Python 3, raw_input() функция не рекомендуется. Кроме того, input() функция считывает данные с клавиатуры в качестве строки, независимо от того, является ли он заключен в кавычках ("" or "" ) , или нет.
input() функция эквивалентна raw_input, за исключением того, что она предполагает, что ввод является корректным выражением Python и возвращает результат оцененного к вам.
#!/usr/bin/python3 >>> x=input("something:") something:10 >>> x "10" >>> x=input("something:") something:"10" #entered data treated as string with or without "" >>> x ""10""
До сих пор вы были чтение и запись стандартного ввода и вывода. Теперь мы увидим, как использовать фактические данные файлы.
Python обеспечивает основные функции и методы, необходимые для работы с файлами по умолчанию. Вы можете сделать большую часть обработки файлов с использованием file объекта.
Перед тем, как можно прочитать или записать файл, вы должны открыть его с помощью Python, встроенной в open() функцию. Эта функция создает file объект, который будет использоваться для вызова других методов поддержки, связанные с ним.
Здесь параметр детали:
file_name: имя_файл аргумент является строка, которая содержит имя файла, который вы хотите получить доступ.
access_mode: access_mode определяет режим, в котором файл должен быть открыт, т.е. чтение, запись, добавление и т.д. Полный список возможных значений приводятся ниже в таблице. Это необязательный параметр и режим доступа файла по умолчанию для чтения (r) .
buffering: Если значение буферизация установлено равным 0, не буферизация не происходит. Если значение буферизации 1, строка буферизация выполняется во время доступа к файлу. Если указать значение буферного как целое число больше 1, то буферные действие выполняются с указанным размером буфера. Если ответ отрицательный, то размер буфера системы по default(default behavior) по default(default behavior) .
Вот список различных режимов открытия файла -
Режимы | Описание |
---|---|
r | Открывает файл только для чтения. Указатель файла помещается в начало файла. Это режим "по умолчанию". |
rb | Открывает файл только для чтения в двоичном формате. Указатель файла помещается в начало файла. Это режим "по умолчанию". |
r+ | Открывает файл для чтения и записи. Файл указатель помещается в начало файла. |
rb+ | Открывает файл для чтения и записи в двоичном формате. Файл указатель помещается в начало файла. |
w | Открывает файл только для записи. Заменяет файл, если файл существует. Если файл не существует, создается новый файл для записи. |
wb | Открывает файл только для записи в двоичном формате. Заменяет файл, если файл существует. Если файл не существует, создается новый файл для записи. |
w+ | Открывает файл как для чтения и письма. Заменяет существующий файл, если файл существует. Если файл не существует, создает новый файл для чтения и записи. |
wb+ | Открывает файл как для записи и чтения в двоичном формате. Заменяет существующий файл, если файл существует. Если файл не существует, создает новый файл для чтения и записи. |
a | Открывает файл для добавления. Указатель файла находится в конце файла, если файл существует. То есть, файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи. |
ab | Открывает файл для добавления в двоичном формате. Указатель файла находится в конце файла, если файл существует. То есть, файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи. |
a+ | Открывает файл для обоего добавляющих и чтения. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи. |
ab+ | Открывает файл как для добавления и чтения в двоичном формате. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи. |
После того, как файл открыт, и у вас есть один file объект, вы можете получить различную информацию, относящуюся к этому файлу.
Вот список всех атрибутов, относящихся к файловому объекту:
Note: атрибут softspace не поддерживается в Python 3.x
Name of the file: foo.txt Closed or not: False Opening mode: wb
close() метод в file объект смывает любую неписаную информацию и закрывает файл объект, после чего больше не писания не может быть сделано.
Python автоматически закрывает файл, когда ссылка на объект файла переназначен в другой файл. Это хорошая практика, чтобы использовать close() метод, чтобы закрыть файл.
Это дает следующий результат -
Name of the file: foo.txt
file объект содержит набор методов доступа, чтобы сделать нашу жизнь проще. Мы хотели бы видеть, как использовать read() и write() методы для чтения и записи файлов.
write() метод записывает любую строку в открытом файле. Важно отметить, что строки Python могут иметь двоичные данные, а не только текст.
write() метод не добавляет символ новой строки ("\n") в конце строки -
Здесь, передаваемый параметр является контент, который будет записан в открытый файл.
Описанный выше метод может создать foo.txt файл и будет писать данное содержание в этом файле и, наконец, было бы закрыть этот файл. Если вы откроете этот файл, он будет иметь следующее содержание.
Python is a great language. Yeah its great!!
read() метод читает строку из открытого файла. Важно отметить, что строки Python могут иметь двоичные данные. помимо текстовых данных.
Здесь, передаваемый параметр является число байтов, которые должны быть считаны из открытого файла. Этот метод начинает читать с начала файла, и если count отсутствует, то он не пытается прочитать как можно больше, может быть, до конца файла.
Давайте возьмем файл foo.txt , который мы создали выше.
#!/usr/bin/python3 # Open a file fo = open("foo.txt", "r+") str = fo.read(10) print ("Read String is: ", str) # Close opened file fo.close()
Это дает следующий результат -
Read String is: Python is
tell() метод говорит вам текущую позицию в файле; Другими словами, следующий чтение или запись будет происходить в том, что многие байт от начала файла.
seek(offset[, from]) метод изменяет текущую позицию в файле. offset аргумент указывает число байтов, которые будут перемещены. from аргумента определяет базисную позицию, откуда байты должны быть перемещены.
Если from установлено значения 0, то это означает, что использовать начало файла в качестве опорной позиции и 1 означает использовать текущее положение в качестве опорной позиции, и если он установлен в 2 , то конец файла будет принят в качестве исходной позиции,
Возьмем файл foo.txt , который мы создали выше.
#!/usr/bin/python3 # Open a file fo = open("foo.txt", "r+") str = fo.read(10) print ("Read String is: ", str) # Check current position position = fo.tell() print ("Current file position: ", position) # Reposition pointer at the beginning once again position = fo.seek(0, 0) str = fo.read(10) print ("Again read String is: ", str) # Close opened file fo.close()
Это дает следующий результат -
Read String is: Python is Current file position: 10 Again read String is: Python is
Python os модуль предоставляет методы, которые помогут вам выполнять файловые операции обработки, такие как переименование и удаление файлов.
Для использования этого модуля необходимо импортировать его первым, а затем вы можете вызывать любые функции, связанные с.
rename() метод принимает два аргумента имя файла и новое имя файла.
Ниже приводится пример, чтобы переименовать существующий файл test1.txt :
#!/usr/bin/python3 import os # Rename a file from test1.txt to test2.txt os.rename("test1.txt", "test2.txt")
Вы можете использовать remove() метод для удаления файлов, указав имя файла, который будет удален в качестве аргумента.
Ниже приведен пример для удаления существующего файла test2.txt -
#!/usr/bin/python3 import os # Delete file test2.txt os.remove("text2.txt")
Вы можете использовать mkdir() метод os модуля для создания каталогов в текущем каталоге. Вы должны указать аргумент для этого метода, который содержит имя каталога, который будет создан.
Ниже приведен пример для создания каталога test в текущем каталоге -
#!/usr/bin/python3 import os # Create a directory "test" os.mkdir("test")
Вы можете использовать chdir() метод для изменения текущего каталога. chdir() метод принимает аргумент, который является именем каталога, который вы хотите, чтобы текущий каталог.
Ниже приводится пример, чтобы войти в "/home/newdir" каталог -
#!/usr/bin/python3 import os # Changing a directory to "/home/newdir" os.chdir("/home/newdir")
getcwd() метод отображает текущий рабочий каталог.
Ниже приводится пример, чтобы дать текущий каталог -
#!/usr/bin/python3 import os # This would give location of the current directory os.getcwd()
rmdir() метод удаляет каталог, который передается в качестве аргумента в методе.
Перед удалением каталога, все содержимое в нем должно быть удалено.
Ниже приводится пример, чтобы удалить "/tmp/test" каталог. Требуется, чтобы дать полное имя каталога, в противном случае он будет искать этот каталог в текущем каталоге.
#!/usr/bin/python3 import os # This would remove "/tmp/test" directory. os.rmdir("/tmp/test")
Есть три важные источников, которые предоставляют широкий спектр вспомогательных методов для обработки и манипулирования файлов & каталогов в операционных системах Windows, и Unix. Они заключаются в следующем -
Файл методов объекта : file объект предоставляет функции для работы с файлами.
Методы объекта ОС : Это предоставляет методы для обработки файлов, а также каталогов.
В данной статье мы рассмотрим встроенные средства python для работы с файлами: открытие / закрытие, чтение и запись.
Итак, начнем. Прежде, чем работать с файлом, его надо открыть. С этим замечательно справится встроенная функция open:
f = open ("text.txt" , "r" )У функции open много параметров, они указаны в статье " ", нам пока важны 3 аргумента: первый, это имя файла. Путь к файлу может быть относительным или абсолютным. Второй аргумент, это режим, в котором мы будем открывать файл.
Режимы могут быть объединены, то есть, к примеру, "rb" - чтение в двоичном режиме. По умолчанию режим равен "rt".
И последний аргумент, encoding, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку.
Первый - метод read, читающий весь файл целиком, если был вызван без аргументов, и n символов, если был вызван с аргументом (целым числом n).
>>> f = open ("text.txt" ) >>> f . read (1 ) "H" >>> f . read () "ello world!\nThe end.\n\n" >>> f = open ("text.txt" ) >>> for line in f : ... line ... "Hello world!\n" "\n" "The end.\n" "\n"Теперь рассмотрим запись в файл. Попробуем записать в файл вот такой вот список:
>>> l = [ str (i ) + str (i - 1 ) for i in range (20 )] >>> lОткроем файл на запись:
>>> f = open ("text.txt" , "w" )Запись в файл осуществляется с помощью метода write:
>>> for index in l : ... f . write (index + " \n " ) ... 4 3 3 3 3Для тех, кто не понял, что это за цифры, поясню: метод write возвращает число записанных символов.
После окончания работы с файлом его обязательно нужно закрыть с помощью метода close:
>>> f . close ()Теперь попробуем воссоздать этот список из получившегося файла. Откроем файл на чтение (надеюсь, вы поняли, как это сделать?), и прочитаем строки.
>>> f = open ("text.txt" , "r" ) >>> l = [ line . strip () for line in f ] >>> l ["0-1", "10", "21", "32", "43", "54", "65", "76", "87", "98", "109", "1110", "1211", "1312", "1413", "1514", "1615", "1716", "1817", "1918"] >>> f . close ()Мы получили тот же список, что и был. В более сложных случаях (словарях, вложенных кортежей и т. д.) алгоритм записи придумать сложнее. Но это и не нужно. В python уже давно придумали средства, такие как или , позволяющие сохранять в файле сложные структуры.
Доброго времени суток, дорогие читатели! Продолжаем изучение замечательного языка питон. Сегодня постараюсь в наиболее понятной форме рассказать о работе с файлами.
На самом деле это простая тема, так что, думаю, все пойдет как по маслу.
Короткое отступление о данной статье.. В честь чего, предлагаю какое бы то ни было общение по этой теме перенести на форум , где можно оставить как свои вопросы, так и показать примеры своего кода. Благодарю за внимание.
Чтение файла в python:
Итак. Файл,а именно текстовый документ file.txt, находится в той же директории, что и моя программа (в данном случае test.py), так что никакие пути я указывать не буду, хотя это возможно. Путь к файлу может быть как относительный, так и абсолютный.
Сейчас мы попытаемся прочитать, что же в нем написано:
>>>f = open("file.txt", "r") >>>print f.read() Привет! Я - файл:)
Встроенная функция open(file, mode=’r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)
— Открывает файл и возвращает соответствующий поток.
Вторым аргументом (все что в скобочках функции) является режим, в котором мы открываем файл. Есть такие режимы:
‘r’
— открытие на чтение (выступает значением по умолчанию).
‘w’
— открытие на запись, содержимое файла удаляется, если файла с таким именем нет, то он автоматически создается.
‘x’
— открытие на запись, если файл не существует, иначе исключение.
‘a’
— открытие на дозаписывание, информация добавляеться в конец уже существующей информации в файле.
‘b’
— открытие в двоичном режиме.
‘t’
— открытие в текстовом режиме (выступает значением по умолчанию).
‘+’
— открытие на чтение и запись.
Кроме того, вышеперечисленные режимы могут быть объеденённы. По умолчанию режим ‘rt’. Если вы хотите произвести чтение в двоичном режиме, то укажите ‘rb’.
Еще существует аргумент encoding
— он задает кодировку и используется только в текстовом режиме чтения файла.
Ну что ж, мы уже познакомились с первым методом 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("string1n") #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("abvgdn") #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
На этом пока все. Оставляйте комментарии. Делитесь ссылкой на статью.