Python чтение чисел из файла. Копирование файлов в Python. Сравнение с компилируемыми языками программирования

После изучения классов в Python мы перейдем к работе с файлами и файловой системой. Функции и объекты, описанные в этой главе, позволят вам сохранять данные между вызовами программы, а также обмениваться данными между программами.

Сегодня мы рассмотрим следующие темы.

  1. Как открыть файл.
  2. Базовые файловые методы.
  3. Стандартный ввод/вывод.
  4. Произвольный доступ.
  5. Построчная работа с файлами.
  6. Закрытие файла.
  7. Итерация.
  8. Pickling.
  9. Бинарные файлы – модуль struct.
  10. Работа с файловой системой.

1. Как открыть файл

Открыть файл можно с помощью функции open:

open(name[, mode[, buffering]])

Функция возвращает файловый объект. Обязателен только первый аргумент. Если остальные параметры отсутствуют, файл будет доступен на чтение. Таблица режимов (mode) функции open:

"r" – чтение.

"w" – запись.

"a" – добавление.

"b" – бинарный режим.

"+" – чтение/запись.

Режим "+" может быть добавлен к остальным режимам. По умолчанию питон открывает файлы в текстовом режиме. Для открытия файла в бинарном режиме на чтение можно добавить "rb". Третий параметр устанавливает размер буферизации при работе с файлом. По умолчанию он выключен, и чтение/запись идет напрямую с диска на диск. Для включения буфера третий параметр должен быть отличным от нуля.

2. Базовые файловые методы

В питоне многие объекты являются файлами: стандартный ввод sys.stdin, стандартный вывод sys.stdout, объекты, открываемые функцией urllib.urlopen и т.д.

Запись в файл:

>>> f = open("my_file", "w") >>> f.write("Hello, ") >>> f.write("World!") >>> f.close()

>>> f = open("my_file", "r") >>> f.read(5) "Hello" >>> f.read() ", World!"

3. Стандартный ввод/вывод

В командной строке можно записать подряд несколько команд, передавая результат работы от одной команды к другой по конвейеру – или по каналу (pipe):

cat my_file | python test.py

Первая команда – cat – пишет содержимое текстового файла my_file на стандартный вывод sys.stdout . Вторая команда запускает питоновский файл, который читает стандартный ввод sys.stdin , подсчитывает в нем количество слов и выводит результат:

test.py: import sys text = sys.stdin.read() words = text.split() wordcount = len(words) print "Wordcount:", wordcount

Канал – или пайп (pipe) – это конструкция, объединяющая стандартный вывод со стандартным вводом и позволяющая обмениваться данными между двумя командами.

4. Произвольный доступ

По умолчанию метод read() читает данные последовательно по порядку, от начала и до конца файла. Для произвольного доступа к файлу есть функция seek:

seek(offset[, whence])

offset – смещение в байтах относительно начала файла;

whence – по умолчанию равен нулю, указывает на то, что смещение берется относительно начала файла.

>>> f = open(r"my_file", "w") >>> f.write("01234567890123456789") >>> f.seek(5) >>> f.write("Hello, World!") >>> f.close() >>> f = open(r"my_file") >>> f.read() "01234Hello, World!89"

Функция tell() возвращает текущую позицию файла.

5. Построчная работа с файлами

Обычно мы имеем дело с текстовыми файлами. Прочитать одну строку:

Функция readline() без параметра читает всю строку, наличие параметра указывает функции максимальное число символов строки, которое будет прочитано. Прочитать все строки и вернуть список строк:

file.readlines()

Записать строки в файл:

f = open(r"my_file") lines = f.readlines() f.close() lines = "This is a my_file2 \n" # изменяем 1-ю строку f = open(r"my_file2","w") f.writelines(lines) f.close()

6. Закрытие файла

Для закрытия файла есть метод close(). Обычно файл закрывается сам после того, как вы выходите из программы, но файлы нужно закрывать вручную по нескольким причинам.

  1. Питон может буферизировать запись в файл ваших данных, что может привести к неожиданным эффектам и возникновению ошибок.
  2. У операционной системы есть ограничение на число одновременно открытых файлов.
  3. При доступе к файлу из разных мест одновременно и на чтение, и на запись необходимо синхронизировать файловые операции. Буферизация записи может привести к тому, что запись уже произошла, а данных в файле еще нет.

Для полной уверенности в закрытии файла можно использовать блок try/finally:

try: # Тут идет запись в файл finally: file.close()

Можно также использовать менеджер контекста, который в любом случае закроет файл:

with open("my_file") as somefile: do_something(somefile)

Если вы все же не хотите закрывать файл, то синхронизировать многопользовательский доступ к файлу на чтение/запись можно с помощью функции flush(), которая актуализирует все операции записи на диск. При этом возможна блокировка файла на чтение.

7. Итерация

Итерация по файлу является базовой операцией и имеет множество вариантов. Использование функции read() для байтового чтения:

f = open(filename) while True: char = f.read(1) if not char: break process(char) f.close()

Построчное чтение текстовых файлов и функция readline():

f = open(filename) while True: line = f.readline() if not line: break process(line) f.close()

Файл сам может выступать в роли итератора:

8. Pickling

Практически любой тип объекта может быть сохранен на диске в любой момент его жизни, а позже прочитан с диска. Для этого есть модуль pickle:

import pickle t1 = s = pickle.dumps(t1) t2 = pickle.loads(s) print t2

Здесь есть небольшой нюанс: t1 и t2 будут двумя разными объектами, хотя и идентичными.

9. Бинарные файлы

Стандартный модуль struct позволяет преобразовывать объекты в структуры C в виде строк в бинарном формате и обратно. Данные в строке располагаются в соответствии со строкой формата. Эти возможности могут быть использованы для чтения и сохранения в двоичном формате.

Функции этого модуля:

pack(format, value1, value2 ...)

Возвращает строку, содержащую значения value1 ..., упакованные в соответствии с форматом. Количество и тип аргументов должны соответствовать значениям, которые требует строка формата format.

unpack(format, string)

Распаковывает строку string в соответствии с форматом format и возвращает кортеж объектов.

calcsize(format)

Возвращает размер структуры (т.е. длину строки), соответствующей формату format.

Таблица основных форматов

Format C Type Python =========================== c char string of length 1 ? Bool bool i int integer l long integer f float float d double float s char string

Перед символом формата может идти число, обозначающее количество повторений. Например, строка формата "4h" полностью эквивалентна строке "hhhh". Символы пропуска между символами формата игнорируются, однако символы пропуска между числом и символом формата не допускаются.

Число перед символом формата "s" интерпретируется как длина строки, а не число повторений. То есть "10s" обозначает строку из 10 символов, в то время как "10c" – 10 раз по одному символу.

Можно изменить порядок следования байтов вручную:

< - little-endian > - big-endian

В следующем примере мы упаковываем в структуру два числа – целое и float, строку из пяти символов, сохраняем в бинарный файл, а потом извлекаем из файла:

from struct import * out = open("123.bin", "wb") format = "if5s" data = pack(format, 24,12.48,"12345") out.write(data) out.close() input = open("123.bin", "rb") data = input.read() input.close() format = "if5s" # one integer value,value2,value3 = unpack(format, data) # note the "," in "value,": unpack apparently returns a n-uple print value print value2 print value3 print calcsize(format) >>> 24 >>> 12.4799995422 >>> 12345 >>> 13

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

Стандартный модуль os имеет интерфейс работы с файловой системой. Каждая программа имеет текущий каталог. Функция os.getcwd возвращает текущий каталог:

import os cwd = os.getcwd() print cwd

Проверить наличие файла в текущем каталоге:

os.path.exists("my_file")

Вывести список файлов и подкаталогов для данного каталога:

os.listdir(path)

Следующий пример рекурсивно выводит список всех файлов и подкаталогов для данного каталога:

import os def walk(dir): for name in os.listdir(dir): path = os.path.join(dir, name) if os.path.isfile(path): print path else: walk(path) walk(path)

В следующем примере мы получим статистическую информацию о текущем каталоге: общий размер каталога в байтах, число файлов, число подкаталогов. Стандартная функция os.path.walk имеет три параметра: каталог, пользовательская функция, список для подсчета:

import os, sys def getlocaldata(sms,dr,flst): for f in flst: fullf = os.path.join(dr,f) if os.path.islink(fullf): continue # don"t count linked files if os.path.isfile(fullf): sms += os.path.getsize(fullf) sms += 1 else: sms += 1 def dtstat(dtroot): sums = # 0 bytes, 0 files, 1 directory so far os.path.walk(dtroot,getlocaldata,sums) return sums report = dtstat(".") print report

В следующем примере сделана интерпретация системной утилиты grep. В текущем каталоге будут найдены файлы с питоновским расширением, в которых будет найдена поисковая строка "import os":

import os, sys, fnmatch mask = "*.py" pattern = "import os" def walk(arg,dir,files): for file in files: if fnmatch.fnmatch(file,mask): name = os.path.join(dir,file) try: data = open(name,"rb").read() if data.find(pattern) != -1: print name except: pass os.path.walk(".",walk,)

Заключение

Сегодня мы узнали, что файловые объекты поддерживают чтение/запись. Для корректной работы с данными файл нужно программно закрывать. Файлы можно открывать в различных режимах. Стандартный ввод/вывод – это тоже файлы. Можно построчно читать и писать в файл. К файлам можно применять байтовую и построчную итерацию. Любые объекты могут быть сохранены на диске в произвольный момент времени в произвольном состоянии и позже восстановлены путем считывания с диска. Чтение/запись можно выполнять в бинарном режиме, соблюдая совместимость со структурами на языке си. Интерфейс с операционной системой позволяет писать компактные программы, дополняющие стандартные утилиты операционной системы.

Приведенные примеры проверены на версии питона 2.6.

Мы обсудили в прошлой статье. В данной статье мы обсудим способы записи данных в файл. Чтобы не было ошибки из за доступа, убедитесь, что в папке где вы хотите выполнить изменения или сам файл имеют права 777 .

Чтобы не соскучится, мы покажем несколько способов внесения данных в файл и наглядно увидим результат . Чтобы открыть файл для записи или же создать его, мы воспользуемся функцией open(filename, mod) и в качестве второго параметрам mod укажем значение w т.е. (write) запись. Если файл с указанным названием filename не существует - он будет создан.

Создаем новый файл в Python

# -*- coding: utf-8 -*- my_file = open("snake.txt", "w") # Закрываем файл my_file.close()

После выполнения данного скрипта, по указанному нами пути будет создан новый файл snake.txt если файл не был создан то нужно проверить права доступа на папку. Стоит учесть, что если файл snake.txt существовал ранее, то после открытия его функцией open() и мод W, тогда содержимое файла удаляется. Если вы хотите добавить что-то в конце, то следует использовать мод "a+".

Запись данных в файл Python

Предположим, что мы создали новый файл и хотим в него внести некий текст, для этого воспользуемся методом 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

Копирование файлов в Python

Как осуществить , мы обсуждали в прошлой статье. Но, можно копировать файлы без использования каких либо библиотек или модулей . В примере мы будем копировать изображения из одной папки в другую.

# -*- 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 – отличный инструмент для обработки данных. Вполне вероятно, что программа, которую вы пишете, будет управлять данными или выполнять операции чтения и записи. Потому особенно полезно знать, как Python обрабатывает различные форматы файлов, в которых хранятся разные типы данных.

Для примера представим программу Python, которая проверяет список пользователей для контроля доступа. Список пользователей, вероятно, будет храниться в текстовом файле. Ещё один пример: программа для выполнения финансового анализа получает вводные данные из сохраненной таблицы. Как видите, вне зависимости от приложения, входные и выходные данные задействованы практически всегда.

В данном руководстве речь идёт о типах форматов, которые поддерживает Python 3. Также руководство научит вас обрабатывать текстовые файлы.

Требования

Для выполнения руководства вам понадобится предварительно настроенная среда Python 3. Все необходимые инструкции вы найдёте в следующих статьях:

Форматы файлов в Python 3

Python очень гибкий и может относительно легко обрабатывать множество различных форматов файлов. Вот основные форматы:

Данное руководство рассматривает только формат txt.

1: Создание текстового файла

Сначала нужно создать тестовый файл для работы. Откройте текстовый редактор и создайте файл days.txt. Добавьте в новый файл список дней недели:

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Сохраните файл и запомните его местонахождение (это нужно для дальнейшей работы). В данном случае файл будет храниться в каталоге /users/8host/days.txt.

2: Открытие файла

Создайте сценарий files.py в текстовом редакторе и для простоты сохраните его в тот же каталог (/users/8host/).

Чтобы открыть файл в Python, нужно связать файл на диске с переменной Python. Сначала сообщите Python, где находится нужный файл. Чтобы открыть какой-либо файл, Python должен знать путь к этому файлу. Путь к файлу days.txt выглядит так: /users/8host/days.txt.

В файле files.py создайте переменную path и укажите в ней путь к файлу days.txt.

Теперь можно использовать функцию open(), чтобы открыть файл days.txt. В качестве первого аргумента функция open() требует путь к файлу, который нужно открыть. Эта функция имеет много других параметров. Одним из основных параметров является режим; это опциональная строка, которая позволяет выбрать режим открытия файла:

  • ‘r’: открыть файл для чтения (опция по умолчанию).
  • ‘w’: открыть файл для записи.
  • ‘x’: создать новый файл и открыть его для записи.
  • ‘a’: вставить в файл.
  • ‘r+’: открыть файл для чтения и записи.

Попробуйте открыть файл для чтения. Для этого создайте переменную days_file и задайте в ней опцию open() и режим ‘r’, чтобы открыть файл days.txt только для чтения.

days_file = open(path,"r")

3: Чтение файла

Теперь вы можете работать с файлом. В зависимости от режима, в котором открыт файл, вы можете выполнить в нём те или иные действия. Для чтения информации Python предлагает три взаимосвязанные операции.

Первая операция — .read(). Она возвращает все содержимое файла в виде одной строки.

days_file.read()
"Monday\nTuesday\nWednesday\nThursday\nFriday\nSaturday\nSunday\n"

Вторая операция — .readline(), которая возвращает содержимое файла построчно.

days_file.readline()
"Monday\n"

Прочитав первую строку файла, операция readline при следующем запуске выведет вторую строку.

days_file.readline()
"Tuesday\n"

Третья операция — .readlines(), она возвращает список строк, где строки представлены в виде отдельных элементов.

days_file.readlines()
["Monday\n", "Tuesday\n", "Wednesday\n", "Thursday\n", "Friday\n", "Saturday\n", "Sunday\n"]

Читая файлы в Python, важно помнить следующее: если файл был прочитан с помощью одной из операций чтения, его нельзя прочитать снова. К примеру, если вы запустили days_file.read(), а затем days_file.readlines(), вторая операция вернёт пустую строку. Потому нужно открывать новую переменную файла всякий раз, когда вы хотите прочитать данные из файла.

4: Запись в файл

Теперь попробуйте создать новый файл, который будет включать заголовок Days of the Week. Сначала создайте переменную title в файле files.py.

title = "Days of the Week\n"

Сохраните дни недели в строковой переменной days. Ниже показан код из всех вышеупомянутых разделов (чтобы было понятнее); файл открывается в режиме чтения, выходные данные операции чтения сохраняются в новой переменной days.

path = "/users/8host/days.txt"
days_file = open(path,"r")
days = days_file.read()

В файле есть переменные для заголовка и содержимого файла days. Теперь можно записать данные в новый файл. Сначала укажите местонахождение файла (/users/8host/), затем – название нового файла (например, new_days.txt). Путь к новому файлу можно указать в переменной new_path. Чтобы открыть новый файл для записи, используйте функцию open() с параметром ‘w’.


Примечание : Если файл с таким именем (new_days.txt) уже существует, при открытии в режиме ‘w’ его содержимое пострадает.

Функция откроет файл, после чего вы можете записать в него данные с помощью операции .write(). Операции записи необходим всего один параметр – строка, которую нужно записать в файл. Чтобы начать новую строку в файле, нужно явно использовать символ новой строки. Запишите в файл files.py заголовок и добавьте пару операторов print.

new_days.write(title)
print(title)
new_days.write(days)
print(days)

После этого нужно закрыть файл.

5: Закрытие файла

Операция закрытия файла прерывает соединение между файлом на диске и переменной. Закрытые файлы могут использоваться другими программами, кроме того, это обеспечивает безопасность данных. закрыть файл можно с помощью функции .close(). Добавьте в файл files.py:

days_file.close()
new_days.close()

6: Проверка кода

Прежде чем запустить сценарий files.py, убедитесь, что его содержимое выглядит так:

path = "/users/8host/days.txt"
days_file = open(path,"r")
days = days_file.read()
new_path = "/users/8host/new_days.txt"
new_days = open(new_path,"w")
title = "Days of the Week\n"
new_days.write(title)
print(title)
new_days.write(days)
print(days)
days_file.close()
new_days.close()

Сохраните код, откройте терминал и запустите сценарий Python:

В терминале появится вывод:

Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Теперь попробуйте открыть файл new_days.txt. Если всё работает должным образом, файл будет выглядеть так:

Days of the Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Заключение

Теперь вы умеете обрабатывать и управлять простыми текстовыми файлами в Python 3: открывать и читать файлы, записывать в них новые данные и закрывать их.

Tags:

В данной статье мы рассмотрим встроенные средства 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 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 функции

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 объекта.

open функция

Перед тем, как можно прочитать или записать файл, вы должны открыть его с помощью Python, встроенной в open() функцию. Эта функция создает file объект, который будет использоваться для вызова других методов поддержки, связанные с ним.

Синтаксис

file object = open(file_name [, access_mode][, buffering])

Здесь параметр детали:

    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 атрибутов объекта

После того, как файл открыт, и у вас есть один file объект, вы можете получить различную информацию, относящуюся к этому файлу.

Вот список всех атрибутов, относящихся к файловому объекту:

Note: атрибут softspace не поддерживается в Python 3.x

пример

#!/usr/bin/python3 # Open a file fo = open("foo.txt", "wb") print ("Name of the file: ", fo.name) print ("Closed or not: ", fo.closed) print ("Opening mode: ", fo.mode) fo.close()

Name of the file: foo.txt Closed or not: False Opening mode: wb

close() Метод

close() метод в file объект смывает любую неписаную информацию и закрывает файл объект, после чего больше не писания не может быть сделано.

Python автоматически закрывает файл, когда ссылка на объект файла переназначен в другой файл. Это хорошая практика, чтобы использовать close() метод, чтобы закрыть файл.

Синтаксис

fileObject.close();

пример

#!/usr/bin/python3 # Open a file fo = open("foo.txt", "wb") print ("Name of the file: ", fo.name) # Close opened file fo.close()

Это дает следующий результат -

Name of the file: foo.txt

Чтение и запись файлов

file объект содержит набор методов доступа, чтобы сделать нашу жизнь проще. Мы хотели бы видеть, как использовать read() и write() методы для чтения и записи файлов.

write() Метод

write() метод записывает любую строку в открытом файле. Важно отметить, что строки Python могут иметь двоичные данные, а не только текст.

write() метод не добавляет символ новой строки ("\n") в конце строки -

Синтаксис

fileObject.write(string);

Здесь, передаваемый параметр является контент, который будет записан в открытый файл.

пример

#!/usr/bin/python3 # Open a file fo = open("foo.txt", "w") fo.write("Python is a great language.\nYeah its great!!\n") # Close opend file fo.close()

Описанный выше метод может создать foo.txt файл и будет писать данное содержание в этом файле и, наконец, было бы закрыть этот файл. Если вы откроете этот файл, он будет иметь следующее содержание.

Python is a great language. Yeah its great!!

read() Метод

read() метод читает строку из открытого файла. Важно отметить, что строки Python могут иметь двоичные данные. помимо текстовых данных.

Синтаксис

fileObject.read();

Здесь, передаваемый параметр является число байтов, которые должны быть считаны из открытого файла. Этот метод начинает читать с начала файла, и если 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() Метод

rename() метод принимает два аргумента имя файла и новое имя файла.

Синтаксис

os.rename(current_file_name, new_file_name)

пример

Ниже приводится пример, чтобы переименовать существующий файл test1.txt :

#!/usr/bin/python3 import os # Rename a file from test1.txt to test2.txt os.rename("test1.txt", "test2.txt")

remove() Метод

Вы можете использовать remove() метод для удаления файлов, указав имя файла, который будет удален в качестве аргумента.

Синтаксис

os.remove(file_name)

пример

Ниже приведен пример для удаления существующего файла test2.txt -

#!/usr/bin/python3 import os # Delete file test2.txt os.remove("text2.txt")

Каталоги в Python

mkdir() Метод

Вы можете использовать mkdir() метод os модуля для создания каталогов в текущем каталоге. Вы должны указать аргумент для этого метода, который содержит имя каталога, который будет создан.

Синтаксис

os.mkdir("newdir")

пример

Ниже приведен пример для создания каталога test в текущем каталоге -

#!/usr/bin/python3 import os # Create a directory "test" os.mkdir("test")

chdir() Метод

Вы можете использовать chdir() метод для изменения текущего каталога. chdir() метод принимает аргумент, который является именем каталога, который вы хотите, чтобы текущий каталог.

Синтаксис

os.chdir("newdir")

пример

Ниже приводится пример, чтобы войти в "/home/newdir" каталог -

#!/usr/bin/python3 import os # Changing a directory to "/home/newdir" os.chdir("/home/newdir")

getcwd() Метод

getcwd() метод отображает текущий рабочий каталог.

Синтаксис

os.getcwd()

пример

Ниже приводится пример, чтобы дать текущий каталог -

#!/usr/bin/python3 import os # This would give location of the current directory os.getcwd()

rmdir() Метод

rmdir() метод удаляет каталог, который передается в качестве аргумента в методе.

Перед удалением каталога, все содержимое в нем должно быть удалено.

Синтаксис:

os.rmdir("dirname")

пример

Ниже приводится пример, чтобы удалить "/tmp/test" каталог. Требуется, чтобы дать полное имя каталога, в противном случае он будет искать этот каталог в текущем каталоге.

#!/usr/bin/python3 import os # This would remove "/tmp/test" directory. os.rmdir("/tmp/test")

Файловые и сопутствующие методы

Есть три важные источников, которые предоставляют широкий спектр вспомогательных методов для обработки и манипулирования файлов & каталогов в операционных системах Windows, и Unix. Они заключаются в следующем -

    Файл методов объекта : file объект предоставляет функции для работы с файлами.

    Методы объекта ОС : Это предоставляет методы для обработки файлов, а также каталогов.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: