Модуль 17.3 (Работа с текстовыми файлами. Часть 3) курса «Поколение Python: курс для продвинутых» курс расскажет о:
- Позиция (курсор) в файле
- Менеджеры контекста
Публикуем решения на урок 17.3 Работа с текстовыми файлами. Часть 3
Вызов каких файловых методов (без переданных аргументов) всегда переводит курсор (текущую позицию) в конец файла?
read()
readlines()
Файл
numbers.txt
содержит строки:78
12
10Что выведет приведенный ниже код?
with open(‘numbers.txt’, encoding=’utf-8′) as file:
line1 = file.readline()
line2 = file.read()
print(line2)
12
10
Файл
words.txt
содержит строки:conflict connection advice
remember consciousness consensusЧто выведет приведенный ниже код?
with open(‘words.txt’, encoding=’utf-8′) as file:
line1 = file.readline().split()
file.seek(0)
line2 = file.readline().split()
print(max(line2, key=len))
connection
Закрытие файлового объекта после его использования лучше осуществить с помощью
использования менеджера контекста with
Файл
input.txt
содержит строки:pop
goes
the
weasel!Что выведет приведенный ниже код?
with open(‘input.txt’, encoding=’utf-8′) as file:
print(‘Repeat after me:’, file.readline().strip())
for line in file:
print(line.strip() + ‘!’)
Repeat after me: pop
goes!
the!
weasel!!
Вам доступен текстовый файл
text.txt
с одной строкой текста. Напишите программу, которая выводит на экран эту строку в обратном порядке.
with open('text.txt') as file:
line = file.read()
print(line[::-1])
Вам доступен текстовый файл
data.txt
, в котором записаны строки текста. Напишите программу, выводящую все строки данного файла в обратном порядке: сначала последнюю, затем предпоследнюю и т.д.
with open('data.txt') as file:
arr = file.readlines()
for i in range(len(arr)):
print(arr[len(arr) - 1 - i].strip())
Вам доступен текстовый файл
lines.txt
, в котором записаны строки текста. Напишите программу, которая выводит все строки наибольшей длины из файла, не меняя их порядок.
max_len = 0
max_str = []
with open('lines.txt') as file:
for line in file.readlines():
if len(line) > max_len:
max_len = len(line)
max_str = [line]
elif len(line) == max_len:
max_str.append(line)
for elem in max_str:
print(elem, end = '')
Вам доступен текстовый файл
numbers.txt
, каждая строка которого может содержать одно или несколько целых чисел, разделенных одним или несколькими пробелами.Напишите программу, которая вычисляет сумму чисел в каждой строке и выводит эту сумму на экран (для каждой строки выводится сумма чисел в этой строке).
with open('numbers.txt') as file:
for line in file.readlines():
print(sum([int(elem) for elem in line.split()]))
Вам доступен текстовый файл
nums.txt
. В файле могут быть записаны целые неотрицательные числа и все, что угодно. Числом назовем последовательность одной и более цифр, идущих подряд (число всегда неотрицательно).Напишите программу, которая вычисляет сумму всех чисел, записанных в файле.
summa = 0
with open('nums.txt') as file:
for line in file.readlines():
result_line = ''
for elem in line:
result_line += elem if elem.isdigit() else ' '
summa += sum([int(elem) for elem in result_line.split()])
print(summa)
Вам доступен текстовый файл
file.txt
, набранный латиницей. Напишите программу, которая выводит количество букв латинского алфавита, слов и строк. Выведите три найденных числа в формате, приведенном в примере.
linesNum = 0
wordsNum = 0
lettersNum = 0
with open('file.txt') as file:
for line in file.readlines():
linesNum += 1
wordsNum += len(line.split())
lettersNum += len([elem for elem in line if elem.isalpha()])
print("Input file contains:\n" + str(lettersNum) + " letters\n" + str(wordsNum) + " words\n" + str(linesNum) + " lines")
Вам доступны два текстовых файла
first_names.txt
иlast_names.txt
, один с именами, другой с фамилиями.Напишите программу, которая c помощью модуля
random
создает 33 случайные пары имя + фамилия, а затем выводит их, каждую на отдельной строке.
from random import randint
firstNames = []
lastNames = []
with open('first_names.txt') as file:
for line in file.readlines():
firstNames.append(line)
with open('last_names.txt') as file:
for line in file.readlines():
lastNames.append(line)
for i in range(3):
print(firstNames[randint(0, len(firstNames))].strip() + ' ' + lastNames[randint(0, len(lastNames))].strip())
Вам доступен текстовый файл
population.txt
с названиями стран и численностью их населения, разделенными символом табуляции'\t'
.Напишите программу выводящую все страны, название которых начинается с буквы
'G'
, численность населения которых больше чем 500 000 человек, не меняя их порядок.
from random import randint
with open('population.txt') as file:
for line in file.readlines():
if (line.startswith('G') and int(line.strip().split()[-1]) > 500000):
print(line.strip().split()[0])
Вам доступен CSV-файл
data.csv
, содержащий информацию вcsv
формате. Напишите функциюread_csv
для чтения данных из этого файла. Она должна возвращать список словарей, интерпретируя первую строку как имена ключей, а каждую последующую строку как значения этих ключей.
def read_csv():
needWriteKeys = True
keys = []
result = []
with open('data.csv') as file:
for line in file.readlines():
if needWriteKeys:
keys = line.strip().split(',')
needWriteKeys = False
else:
result.append(dict(zip(keys, line.strip().split(','))))
return result
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы