Python input file windows

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

Вывод данных в консоль

Один из самых распространенных способов вывести данные в Python – это напечатать их в консоли. Если вы находитесь на этапе изучения языка, такой способ является основным для того, чтобы быстро просмотреть результат свой работы. Для вывода данных в консоль используется функция print.

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

>>> print("Hello")
Hello
>>> print("Hello, " + "world!")
Hello, world!
>>> print("Age: " + str(23))
Age: 23

По умолчанию, для разделения элементов в функции print используется пробел.

>>> print("A", "B", "C")
A B C

Для замены разделителя необходимо использовать параметр sep функции print.

print("A", "B", "C", sep="#")
A#B#C

В качестве конечного элемента выводимой строки, используется символ перевода строки.

>>> for i in range(3):
    print("i: " + str(i))   
i: 0
i: 1
i: 2

Для его замены используется параметр end.

>>> for i in range(3):
    print("[i: " + str(i) + "]", end=" -- ")
[i: 0] -- [i: 1] -- [i: 2] -- 

Ввод данных с клавиатуры

Для считывания вводимых с клавиатуры данных используется функция input().

>>> input()
test
'test'

Для сохранения данных в переменной используется следующий синтаксис.

>>> a = input()
hello
>>> print(a)
hello

Если считывается с клавиатуры целое число, то строку, получаемую с помощью функции input(), можно передать сразу в функцию int().

>>> val = int(input())
123
>>> print(val)
123
>>> type(val)
<class 'int'>

Для вывода строки-приглашения, используйте ее в качестве аргумента функции input().

>>> tv = int(input("input number: "))
input number: 334
>>> print(tv)
334

Преобразование строки в список осуществляется с помощью метода split(), по умолчанию, в качестве разделителя, используется пробел.

>>> l = input().split()
1 2 3 4 5 6 7
>>> print(l)
['1', '2', '3', '4', '5', '6', '7']

Разделитель можно заменить, указав его в качестве аргумента метода split().

>>> nl = input().split("-")
1-2-3-4-5-6-7
>>> print(nl)
['1', '2', '3', '4', '5', '6', '7']

Для считывания списка чисел с одновременным приведением их к типу int можно воспользоваться вот такой конструкцией.

>>> nums = map(int, input().split())
1 2 3 4 5 6 7
>>> print(list(nums))
[1, 2, 3, 4, 5, 6, 7]

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

Открытие и закрытие файла

Для открытия файла используется функция open(), которая возвращает файловый объект. Наиболее часто используемый вид данной функции выглядит так open(имя_файла, режим_доступа).

Для указания режима доступа используется следующие символы:

r’ – открыть файл для чтения;

w’ – открыть файл для записи;

x’ – открыть файл с целью создания, если файл существует, то вызов функции open завершится с ошибкой;

a’ – открыть файл для записи, при этом новые данные будут добавлены в конец файла, без удаления существующих;

b’ – бинарный режим;

t’ – текстовый режим;

+’ – открывает файл для обновления.

По умолчанию файл открывается на чтение в текстовом режиме.

У файлового объекта есть следующие атрибуты.

file.closed – возвращает true если файл закрыт и false в противном случае;

file.mode – возвращает режим доступа к файлу, при этом файл должен быть открыт;

file.name – имя файла.

>>> f = open("test.txt", "r")
>>> print("file.closed: " + str(f.closed))
file.closed: False
>>> print("file.mode: " + f.mode)
file.mode: r
>>> print("file.name: " + f.name)
file.name: test.txt

Для закрытия файла используется метод close().

Чтение данных из файла

Чтение данных из файла осуществляется с помощью методов read(размер) и readline().

Метод read(размер) считывает из файла определенное количество символов, переданное в качестве аргумента. Если использовать этот метод без аргументов, то будет считан весь файл.

>>> f = open("test.txt", "r")
>>> f.read()
'1 2 3 4 5\nWork with file\n'
>>> f.close()

В качестве аргумента метода можно передать количество символом, которое нужно считать.

>>> f = open("test.txt", "r")
>>> f.read(5)
'1 2 3'
>>> f.close()

Метод readline() позволяет считать строку из открытого файла.

>>> f = open("test.txt", "r")
>>> f.readline()
'1 2 3 4 5\n'
>>> f.close()

Построчное считывание можно организовать с  помощью оператора for.

>>> f = open("test.txt", "r")
>>> for line in f:
...     print(line)
...
1 2 3 4 5
Work with file

>>> f.close()

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

Для записи данных файл используется метод write(строка), при успешной записи он вернет количество записанных символов.

>>> f = open("test.txt", "a")
>>> f.write("Test string")
11
>>> f.close()

Дополнительные методы для работы с файлами

Метод tell() возвращает текущую позицию “условного курсора” в файле. Например, если вы считали пять символов, то “курсор” будет установлен в позицию 5.

>>> f = open("test.txt", "r")
>>> f.read(5)
'1 2 3'
>>> f.tell()
5
>>> f.close()

Метод seek(позиция) выставляет позицию в файле.

>>> f = open("test.txt", "r")
>>> f.tell()
0
>>> f.seek(8)
8
>>> f.read(1)
'5'
>>> f.tell()
9
>>> f.close()

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

>>> with open("test.txt", "r") as f:
...     for line in f:
...             print(line)
...
1 2 3 4 5
Work with file
Test string
>>> f.closed
True

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

<<< Python. Урок 11. Работа с исключениями   Python. Урок 13. Модули и пакеты >>>

Эта статья посвящена работе с файлами (вводу/выводу) в Python: открытие, чтение, запись, закрытие и другие операции.

Файл — это всего лишь набор данных, сохраненный в виде последовательности битов на компьютере. Информация хранится в куче данных (структура данных) и имеет название «имя файла» (filename).

В Python существует два типа файлов:

  1. Текстовые
  2. Бинарные

Текстовые файлы

Это файлы с человекочитаемым содержимым. В них хранятся последовательности символов, которые понимает человек. Блокнот и другие стандартные редакторы умеют читать и редактировать этот тип файлов.

Текст может храниться в двух форматах: (.txt) — простой текст и (.rtf) — «формат обогащенного текста».

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

В бинарных файлах данные отображаются в закодированной форме (с использованием только нулей (0) и единиц (1) вместо простых символов). В большинстве случаев это просто последовательности битов.

Они хранятся в формате .bin.

Любую операцию с файлом можно разбить на три крупных этапа:

  1. Открытие файла
  2. Выполнение операции (запись, чтение)
  3. Закрытие файла

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

Метод open()

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

Синтаксис следующий:

f = open(file_name, access_mode)

Где,

  • file_name = имя открываемого файла
  • access_mode = режим открытия файла. Он может быть: для чтения, записи и т. д. По умолчанию используется режим чтения (r), если другое не указано. Далее полный список режимов открытия файла
Режим Описание
r Только для чтения.
w Только для записи. Создаст новый файл, если не найдет с указанным именем.
rb Только для чтения (бинарный).
wb Только для записи (бинарный). Создаст новый файл, если не найдет с указанным именем.
r+ Для чтения и записи.
rb+ Для чтения и записи (бинарный).
w+ Для чтения и записи. Создаст новый файл для записи, если не найдет с указанным именем.
wb+ Для чтения и записи (бинарный). Создаст новый файл для записи, если не найдет с указанным именем.
a Откроет для добавления нового содержимого. Создаст новый файл для записи, если не найдет с указанным именем.
a+ Откроет для добавления нового содержимого. Создаст новый файл для чтения записи, если не найдет с указанным именем.
ab Откроет для добавления нового содержимого (бинарный). Создаст новый файл для записи, если не найдет с указанным именем.
ab+ Откроет для добавления нового содержимого (бинарный). Создаст новый файл для чтения записи, если не найдет с указанным именем.

Пример

Создадим текстовый файл example.txt и сохраним его в рабочей директории.

Текстовый файл пример

Следующий код используется для его открытия.

f = open('example.txt','r')  # открыть файл из рабочей директории в режиме чтения
fp = open('C:/xyz.txt','r')  # открыть файл из любого каталога

В этом примере f — переменная-указатель на файл example.txt.

Следующий код используется для вывода содержимого файла и информации о нем.

>>> print(*f) # выводим содержимое файла
This is a text file.
>>> print(f) # выводим объект
<_io.TextIOWrapper name='example.txt' mode='r' encoding='cp1252'>

Стоит обратить внимание, что в Windows стандартной кодировкой является cp1252, а в Linux — utf-08.

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

Метод close()

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

Существуют следующие способы:

Способ №1

Проще всего после открытия файла закрыть его, используя метод close().

f = open('example.txt','r')
# работа с файлом
f.close()

После закрытия этот файл нельзя будет использовать до тех пор, пока заново его не открыть.

Способ №2

Также можно написать try/finally, которое гарантирует, что если после открытия файла операции с ним приводят к исключениям, он закроется автоматически.

Без него программа завершается некорректно.

Вот как сделать это исключение:

f = open('example.txt','r')
try:
   # работа с файлом
finally:
   f.close()

Файл нужно открыть до инструкции try, потому что если инструкция open сама по себе вызовет ошибку, то файл не будет открываться для последующего закрытия.

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

Способ №3

Инструкция with

Еще один подход — использовать инструкцию with, которая упрощает обработку исключений с помощью инкапсуляции начальных операций, а также задач по закрытию и очистке.

В таком случае инструкция close не нужна, потому что with автоматически закроет файл.

Вот как это реализовать в коде.

with open('example.txt') as f:
    # работа с файлом

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

В Python файлы можно читать или записывать информацию в них с помощью соответствующих режимов.

Функция read()

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

Синтаксис

file.read(size)

Где,

  • file = объект файла
  • size = количество символов, которые нужно прочитать. Если не указать, то файл прочитается целиком.

Пример

>>> f = open('example.txt','r')
>>> f.read(7)  # чтение 7 символов из example.txt
'This is '

Интерпретатор прочитал 7 символов файла и если снова использовать функцию read(), то чтение начнется с 8-го символа.

>>> f.read(7)  # чтение следующих 7 символов
' a text'

Функция readline()

Функция readline() используется для построчного чтения содержимого файла. Она используется для крупных файлов. С ее помощью можно получать доступ к любой строке в любой момент.

Пример

Создадим файл test.txt с нескольким строками:

This is line1.
This is line2.
This is line3.

Посмотрим, как функция readline() работает в test.txt.

>>> x = open('test.txt','r')
>>> x.readline()  # прочитать первую строку
This is line1.
>>> x.readline(2)  # прочитать вторую строку
This is line2.
>>> x.readlines()  # прочитать все строки
['This is line1.','This is line2.','This is line3.']

Обратите внимание, как в последнем случае строки отделены друг от друга.

Функция write()

Функция write() используется для записи в файлы Python, открытые в режиме записи.

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

Синтаксис

file.write(string)

Пример

Предположим, файла xyz.txt не существует. Он будет создан при попытке открыть его в режиме чтения.

>>> f = open('xyz.txt','w')  # открытие в режиме записи
>>> f.write('Hello \n World')  # запись Hello World в файл
Hello
World
>>> f.close()  # закрытие файла

Переименование файлов в Python

Функция rename()

Функция rename() используется для переименовывания файлов в Python. Для ее использования сперва нужно импортировать модуль os.

Синтаксис следующий.

import os
os.rename(src,dest)

Где,

  • src = файл, который нужно переименовать
  • dest = новое имя файла

Пример

>>> import os
>>> # переименование xyz.txt в abc.txt
>>> os.rename("xyz.txt","abc.txt")

Текущая позиция в файлах Python

В Python возможно узнать текущую позицию в файле с помощью функции tell(). Таким же образом можно изменить текущую позицию командой seek().

Пример

>>> f = open('example.txt')  # example.txt, который мы создали ранее
>>> f.read(4)  # давайте сначала перейдем к 4-й позиции
This
>>> f.tell()  # возвращает текущую позицию
4
>>> f.seek(0,0)  # вернем положение на 0 снова

Методы файла в Python

file.close() закрывает открытый файл
file.fileno() возвращает целочисленный дескриптор файла
file.flush() очищает внутренний буфер
file.isatty() возвращает True, если файл привязан к терминалу
file.next() возвращает следующую строку файла
file.read(n) чтение первых n символов файла
file.readline() читает одну строчку строки или файла
file.readlines() читает и возвращает список всех строк в файле
file.seek(offset[,whene]) устанавливает текущую позицию в файле
file.seekable() проверяет, поддерживает ли файл случайный доступ. Возвращает True, если да
file.tell() возвращает текущую позицию в файле
file.truncate(n) уменьшает размер файл. Если n указала, то файл обрезается до n байт, если нет — до текущей позиции
file.write(str) добавляет строку str в файл
file.writelines(sequence) добавляет последовательность строк в файл

Last Updated :
29 Dec, 2023

With the help of fileinput.input() method, we can get the file as input and can be used to update and append the data in the file by using fileinput.input() method.

Python fileinput.input() Syntax

Syntax : fileinput.input(files)

Parameter :

  • fileinput module in Python has input() for reading from multiple files.
  • input() in fileinput reads input from various sources.
  • files parameter specifies file names, defaulting to stdin if not specified.

Return : Return the data of the file.

What is fileinput.input() in Python?

`fileinput.input()` in Python is a function provided by the `fileinput` module. It allows reading input from multiple files. The function returns an iterable, and the optional `files` parameter specifies the files to read from; if not provided, it defaults to reading from standard input (stdin). Each iteration of the iterable corresponds to a line from the specified files.

Python fileinput.input() Examples

There are various methods to open a file by user input in Python here, we are discussing some general use cases of opening a file by user input in Python which are the following.

Reading From a Single File

Input File

In this example we can see that by using fileinput.input() method, we are able to get the data of the file line by line by using this method.

Python3

import fileinput

filename = 'example.txt'

for line in fileinput.input(files=filename):

    print(line, end='')

Output :

Reading From Multiple Files

Input Files

In this example code utilizes the fileinput module in Python to read input from the specified files, ‘gfg.txt’ and ‘gfg1.txt’. The fileinput.input() method returns an iterable, and the loop iterates over each line from the files, printing them to the console

Python3

import fileinput

for line in fileinput.input(files =('gfg.txt', 'gfg1.txt')):

    print(line)

Output

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

Предварительные требования:

  • Убедитесь, что у вас установлена последняя версия Python.
  • Ознакомьтесь с любым текстовым редактором, поддерживаемым Python, по вашему выбору.
  • Изучите базовые навыки синтаксиса Python.

Для быстрого доступа к Python IDE проверьте Replit. Вы также можете клонировать этот репозиторий и запустить его на Replit.

Постоянство данных и как загружать файлы в основную память

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

Для работы с файлами их необходимо сначала загрузить в основную память. Основная память — это временная кэш-память, которая хранит запрашиваемые данные на короткое время. Данные теряются при выключении компьютера.

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

Python взаимодействует с файлами, загруженными в основную память, через «обработчики файлов». Давайте рассмотрим обработчики файлов подробнее.

Как работают файловые дескрипторы

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

Если файл удалось открыть, ОС возвращает файловый дескриптор. После этого мы можем взаимодействовать с файлом через этот дескриптор.

Файловый дескриптор не содержит данные напрямую, он просто предоставляет интерфейс для выполнения операций с файлом.

Файловый дескриптор предоставляет вашей программе доступ к данным во вторичной памяти.

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

В этом примере мы откроем файл daffodils.txt. Обратите внимание, что этот файл должен находиться в той же папке, что и ваша программа на Python. Вы можете скачать файл daffodils.txt по этой ссылке на GitHub.

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

Пример

fhand = open('daffodils.txt')
print(fhand)

В приведенном выше примере операционная система вернет файловый дескриптор в переменной fhand, если открытие файла прошло успешно. По умолчанию вы можете только читать файл.

Вывод:

Файловый дескриптор отображается таким образом, где name — это имя файла, а mode — это разрешение, которое в нашем случае равно r (означает чтение). encoding — это механизм кодировки для набора символов Unicode.

Исключение:

Если файл не существует, мы получим исключение, например:

Как напечатать файл

Теперь у нас есть файловый дескриптор, что означает, что мы можем получить доступ к файлу. Давайте напечатаем содержимое файла и посмотрим, что там.

Пример:

# Get the file handler
fhand = open('daffodils.txt')

# Loop through each line via file handler
for line in fhand:
  print(line)

Вывод:

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

Как обрабатывать дополнительные пустые строки

Символ новой строки в Python представлен как \n. Этот символ добавляет новую строку, когда размещен в строке.

В конце каждой строки находится символ новой строки, который переводит вывод на следующую строку. Мы можем визуализировать это, используя метод repr().

Согласно документации Python, метод repr() возвращает строку, содержащую печатное представление объекта. Это означает, что мы можем увидеть любые специальные символы, такие как \t или \n, которые появляются в строке.

Запустим пример ниже и посмотрим на вывод.

Пример:

Возвращаемся к нашему файлу, мы можем использовать repr() для проверки специальных символов.

# Get the file handler
fhand = open('daffodils.txt')

# Loop through each line via file handler
for line in fhand:
  print(repr(line))

Вывод:

Здесь мы можем увидеть, что происходит «за кулисами».

Кроме того, метод print по умолчанию добавляет новую строку. Это означает, что при использовании print мы получаем еще одну новую строку в выводе. Мы можем обрабатывать эту дополнительную строку двумя способами.

Подход #1: Изменение значения по умолчанию end в print

Ниже приведен фрагмент кода, который показывает аргументы функции print. Мы видим, что по умолчанию значение end равно \n. Это означает, что каждое вызов print завершится символом новой строки \n.

Мы можем изменить значение по умолчанию end=’\n’ на пробел, чтобы не получать новую строку в конце каждой строки. Посмотрим пример ниже, чтобы лучше понять это.

# By default output would go in separate lines
print("Hello")
print("World")

# Print on the same line because end = ' '
# added single space
print("Hello", end = ' ') 
print("World")

Вывод:

Печать на одной и разных строках с использованием print()

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

# Get the file handler
fhand = open('daffodils.txt')

# Loop through each line and modify the default value of 'end'
for line in fhand:
  print(line, end = '')

Вывод:

И вот у нас желаемый вывод!

Печать без лишних строк с использованием print().

Подход #2: Использование метода rstrip()

Мы можем удалить определенные символы вокруг строки с помощью метода strip().

Теперь мы знаем, что по умолчанию каждая строка в файле заканчивается на \n. Поскольку нас интересует только символ справа, мы используем rstrip(), который означает «удаление справа». Рассмотрим пример использования rstrip() ниже.

# Get the file handler
fhand = open('daffodils.txt')

# Loop through each line and remove extra line character with rstrip()
for line in fhand:
  line = line.rstrip()
  print(line)

Вывод:

Печать без лишних строк с использованием rstrip().

Как позволить пользователю выбрать файл

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

Попросим пользователя ввести имя файла. Затем мы подсчитаем количество строк в файле.

Пример:

fname = input('Enter the file name: ')
fhand = open(fname)
count = 0
for line in fhand:
     count = count + 1
print('There are', count, 'lines in', fname)

Вывод:

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

Как записывать в файл на Python

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

  • w — (Запись) записывает в существующий файл, но стирает существующее содержимое.
  • a — (Добавление) добавляет к существующему файлу.
  • x — (Создание) создает файл и возвращает ошибку, если файл уже существует.

Как записать в файл

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

# Open file with mode 'w'
fout = open('flower.txt', 'w')
fout.write("This content would be added and existing would be discarded")
fout.close()

Как добавить в файл

Флаг a добавляет к существующему содержимому и сохраняет его.

# Open file with mode 'a'
fout = open('flower.txt', 'a')
fout.write("Now the file has more content at the end!")
fout.close()

Как создать файл и записать в него

Режим x создает файл и добавляет в него содержимое.

# Open file with mode 'x'
fout = open('new-file.txt', 'x')
fout.write("Now the new file has some content!")
fout.close()

Если файл уже существует, мы получим исключение:

Traceback (most recent call last):
  File "main.py", line 2, in <module>
    fout = open('flower.txt', 'x')
FileExistsError: [Errno 17] File exists: 'flower.txt'

Обработка исключений

Возможно, файл, который мы запрашиваем, не существует. Это приведет к сбою программы из-за исключения:

Чтобы сделать программу более удобной для пользователя, мы можем обработать это исключение в блоке try-except.

Рисковая часть программы, которая может вызвать сбой, записана в блоке try. Если код выполняется без исключений, блок except пропускается, и программа продолжает работу. Если возникает исключение, выполняется блок except, который завершает программу корректно с помощью команды exit.

fname = input('Enter the file name: ')
try:
  fhand = open(fname)
except:
  print('File nout found and can not be opened:', fname)
  exit()
count=0
for line in fhand:
  count = count + 1
print('There are', count, 'lines in', fname)

Вывод:

Обработка исключений с использованием блока try-except.

Подведение итогов

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

Все фрагменты кода и примерные файлы сохранены в этом репозитории на GitHub.

Надеемся, этот урок был полезен!

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Не удалось восстановить подключение ко всем сетевым дискам windows 10
  • Messenger windows live messenger 2011
  • Как посмотреть данные видеокарты на windows 11
  • Ndi scan converter windows
  • Подготовка автоматического восстановления windows 10 что это значит