При работе с большими наборами данных в задачах машинного обучения работа с файлами является основной необходимостью. Поскольку Python является наиболее часто используемым языком для науки о данных, вам необходимо хорошо разбираться в различных файловых операциях. Итак, давайте рассмотрим здесь некоторые файловые операции Python.
Открытие файла с помощью функции open()
Первый шаг к работе с файлами в Python – научиться открывать файл. Вы можете открывать файлы с помощью метода open(). Функция open() в Python принимает два аргумента. Первый – это имя файла с полным путем, а второй – режим открытия файла. Ниже перечислены некоторые из распространенных режимов чтения файлов:
‘r’ – этот режим указывает, что файл будет открыт только для чтения;
‘w’ – этот режим указывает, что файл будет открыт только для записи. Если файл, содержащий это имя, не существует, он создаст новый;
‘a’ – этот режим указывает, что вывод этой программы будет добавлен к предыдущему выводу этого файла;
‘r +’ – этот режим указывает, что файл будет открыт как для чтения, так и для записи.
Например,
f = open ( 'input.txt' , 'r' )
Чтение файлов
Чтобы прочитать файл, вам нужно открыть файл в режиме чтения или записи. В то время, как для записи в файл на Python вам нужно, чтобы файл был открыт в режиме записи.
Вот некоторые функции Python, которые позволяют читать и записывать файлы:
read() – эта функция читает весь файл и возвращает строку;
readline() – эта функция считывает строки из этого файла и возвращает их в виде строки. Он выбирает строку n, если она вызывается n-й раз.
write() – эта функция записывает фиксированную последовательность символов в файл.
writelines() – эта функция записывает список строк.
append() – эта функция добавляет строку в файл вместо перезаписи файла.
Например, нам нужно вывести на экран информацию из файла input.txt. Тогда код будет следующим:
f=open('input.txt','r')
print(f.read())
Рассмотрим запись кода, если нам нужно присвоить значения из файла в переменные:
f=open('input.txt','r')
a,b,c = map(int,f.read().split())
s=a+b+c
print(s)
Так, мы считали целую строку значений в переменные a, b, c, затем сложили их и вывели на экран.
После окончания работы с файлом его обязательно нужно закрыть с помощью метода close! Тогда наш код будет выглядеть слующим образом:
f=open('input.txt','r')
a,b,c = map(int,f.read().split())
s=a+b+c
print(s)
f.close()
Запись файлов
Теперь рассмотрим запись в файл.
Откроем файл на запись:
f= open('output.txt','w')
Запись в файл осуществляется с помощью метода write:
f.write(s)
Тогда полный код будет выглядеть так:
f=open('input.txt','r')
a,b,c = map(int,f.read().split())
s=a+b+c
f.close()
f= open('output.txt','w')
f.write(s)
f.close()
После окончания работы с файлом его обязательно нужно закрыть с помощью метода close:
РЕШЕНИЕ ЗАДАЧ
В прошлом году Вася пошел в школу и научился считать. В этом году он изучил таблицу умножения и теперь умеет перемножать любые числа от 1 до 10 без ошибок. Друг Петя рассказал ему про системы счисления, отличные от десятичной. В частности, про двоичную, восьмеричную и даже шестнадцатеричную. Теперь Вася без труда (но уже с помощью листка и ручки) может перемножать числа от 1 до 10 и в этих системах, используя перевод из нестандартной системы в десятичную и обратно из десятичной. Например, если Васе нужно перемножить числа 101 и 1001 в двоичной системе, то он сначала эти числа переводит в десятичное представление следующим образом:
(101)2=1*22+0*21+1*20=4+0+1=5
(1001)2=1*23+0*22+0*21+1*20=8+0+0+1=9
После чего перемножение чисел 5 и 9 Вася с легкостью производит в десятичной системе счисления в уме и получает число 45. Далее производится перевод из десятичной системы счисления в двоичную. Для этого Вася делит число 45 на 2 (порядок системы счисления), запоминая остатки от деления, до тех пор пока в результате не останется число 0.
Ответ составляется из полученных остатков от деления путем их записи в обратном порядке. Таким образом Вася получает результат: (101)2 * (1001)2 = (101101)2. Но теперь Вася изучает таблицу умножения чисел от 1 до 100 в десятичной системе счисления, а поскольку запомнить такую таблицу очень сложно, то Васе придется очень долго ее зубрить. Составьте для Васи программу, которая поможет ему проверять свои знания.
Во входном файле INPUT.TXT записаны три натуральных числа A, B и C через пробел. Числа A и B ≤ 102, а C ≤ 106.
В выходной файл нужно вывести YES в том случае, если A*B=C и вывести NO в противном случае.
Решение:
a,b,c=map(int, input().split())
if a*b==c:
print('YES')
else:
print('NO')
Решение с файлами:
f=open( ' input.txt ' , ' r' )
a,b,c=map(int, f.readline().split())
f.close()
f=open( ' output.txt ' , ' w' )
if a*b==c:
f.write( ' YES ')
else:
f.write( ' NO ')
f.close()
КОМПЬЮТЕРНЫЙ ПРАКТИКУМ
Одна из основных операций с числами – их сравнение. Мы подозреваем, что вы в совершенстве владеете этой операцией и можете сравнивать любые числа, в том числе и целые. В данной задаче необходимо сравнить два целых числа.
В двух строчках входного файла INPUT.TXT записаны числа A и B, не превосходящие по абсолютной величине 2×109.
Запишите в выходной файл OUTPUT.TXT один символ "<", если A < B, ">", если A > B и "=", если A=B.
Решение:
f=open('input.txt','r')
a=int(f.readline())
b=int(f.readline())
f.close()
f=open('output.txt','w')
if a<b:
f.write('<')
elif a>b:
f.write('>')
else:
f.write('=')
f.close()
В свободное время одноклассники Вася и Петя любят играть в различные логические игры: морской бой, крестики-нолики, шахматы, шашки и многое другое. Ребята уже испробовали и поиграли во всевозможные классические игры подобного рода, включая компьютерные. Однажды им захотелось сыграть во что-нибудь новое, но ничего подходящего найти не удалось. Тогда Петя придумал следующую игру «Угадайка»: Играют двое участников. Первый загадывает любое трехзначное число, такое что первая и последняя цифры отличаются друг от друга более чем на единицу. Далее загадавший число игрок переворачивает загаданное число, меняя первую и последнюю цифры местами, таким образом получая еще одно число. Затем из максимального из полученных двух чисел вычитается минимальное. Задача второго игрока – угадать по первой цифре полученного в результате вычитания числа само это число. Например, если Вася загадал число 487, то перестановкой первой и последней цифры он получит число 784. После чего ему придется вычесть из 784 число 487, в результате чего получится число 297, которое и должен отгадать Петя по указанной первой цифре «2», взятой из этого числа. Петя успевает лучше Васи по математике, поэтому практически всегда выигрывает в играх такого типа. Но в данном случае Петя схитрил и специально придумал такую игру, в которой он не проиграет Васе в любом случае. Дело в том, что придуманная Петей игра имеет выигрышную стратегию, которая заключается в следующем: искомое число всегда является трехзначным и вторая его цифра всегда равна девяти, а для получения значения последней достаточно отнять от девяти первую, т.е. в рассмотренном выше случае последняя цифра равна 9-2=7. Помогите Пете еще упростить процесс отгадывания числа по заданной его первой цифре, написав соответствующую программу.
В единственной строке входного файла INPUT.TXT задана единственная цифра К, соответствующая первой цифре полученного Васей в результате вычитания наименьшего загаданного Васей значения из наибольшего.
В выходной файл OUTPUT.TXT нужно вывести значение полученной Васей разности.
Решение 1:
f=open('input.txt','r')
a=int(f.readline())
f.close()
f=open('output.txt','w')
x=9-a
f.write(str(a)+'9'+str(x))
f.close()
Решение 2:
f=open('input.txt','r')
a=int(f.readline())
f.close()
f=open('output.txt','w')
x=a*100+90+9-a
f.write(str(x))
f.close()