You are on page 1of 7

Лабораторна робота № 6

РОБОТА З ФАЙЛАМИ
Мета роботи: ознайомитися з засобами роботи з файлами в мові Python, діями
над ними
Хід роботи:
Завдання 1. Створіть новий файл numbers.txtу текстовому редакторі і запишіть у
нього 10 чисел, кожне з нового рядка. Напишіть програму, яка зчитує ці числа з
файла і обчислює їх суму, виводить цю суму на екран і, водночас, записує цю
суму у інший файл з назвою sum_numbers.txt.
import time
from datetime import datetime
# Завдання 1
print('Завдання 1')
total = 0

with open("numbers.txt", 'r') as inp:


for line in inp:
try:
num = float(line)
total += num
tot = str(total)
except ValueError:
print('{} is not a number!'.format(line))

with open('sum_numbers.txt', 'w') as outp:


outp.write(tot)
print('Total of all numbers: {}'.format(tot))
Результат виконання:

Рис. 1 – Результат виконання коду


Завдання 2. Реалізуйте програму, яка зчитує довільну кількість цілих чисел, що
вводяться зкомандного рядка, і записує у текстовий файл інформацію, щодо
парності або непарності чисел.

ДУ «Житомирська політехніка».21.123.10.000 – Лр6


Змн. Арк. № докум. Підпис Дата
Розроб. Ковальчук І.В. Літ. Арк. Аркушів
Перевір. Морозов Д.С. 1
Звіт з
Керівник
Н. контр. лабораторної роботи ФІКТ Гр. КІ-19-1[1]
Зав. каф.
# Завдання 2
print('Завдання 2')
with open('num.txt', 'w') as numers:
try:
n = int(input('Введіть кількість чисел, яку хочете ввести: '))
except ValueError:
print('{} is not int number!'.format(n))
for k in range(0, n):
try:
num2 = int(input('Число: '))
except ValueError:
print('{} is not int number!'.format(num2))
if num2 % 2 == 0:
numers.write("Число {} парне\n".format(num2))
else:
numers.write("Число {} непарне\n".format(num2))
Результат виконання:

Рис. 2 – Результат виконання коду

Завдання 3. . Створіть новий файл у текстовому редакторі і напишіть кілька


рядків тексту у ньому про можливості Python. Кожен рядок повинен починатися з
фрази: «Pythonможна використатидля ...» . Збережіть файл з ім’ям
learning_python.txt. Напишіть програму, яка зчитує файл і виводить текст з
перебором рядків файла і зі збереженням рядків у списку з подальшим
сортуванням списку за довжиною рядків в ньому від найбільшого до найменшого.
# Завдання 3
print('Завдання 3')
text = ''
list = []
with io.open(r'learning_python.txt', 'r', encoding='utf-8') as myfile:
for line in myfile:
text += line

Ковальчук І.В. Арк.


Морозов Д.С. ДУ «Житомирська політехніка».21.123.10.000 – Лр6
7
Змн. Арк. № докум. Підпис Дата
list.append(line)
print(text)
print(list)
list.sort()
print('Відсортований список: ', list)
Результат виконання:

Рис. 3 – Результат виконання коду

Завдання 4. Прочитайте кожен рядок зі створеного у попередньому завданні


файла learning_python.txtі замініть слово Pythonназвою іншої мови, наприклад
Cпри виведенні на екран.Отриманий файл має бути створений в новому каталозі,
що розміщується в поточному. Відкрийте файл пострічково і дайте можливість
користувачеві визначити які змінені фрази є актуальними, наприклад для мови С,
а які ні. Всі хибні твердження запишіть в інший файл, а істинні –в поточний.
# Завдання 4
print('Завдання 4')
text_4 = ''
right_info = ''
wrong_info = ''
with io.open(r'learning_python.txt', 'r', encoding='utf-8') as myfile_4:
for line in myfile_4:
text_4 += line
text_4_c = text_4.replace('Python', 'C')
if not os.path.isdir(r'new_catalog'):
os.mkdir(r'new_catalog')
with open(r'new_catalog\C_file.txt', 'w') as c_file:
c_file.write(text_4_c)
with open(r'new_catalog\C_file.txt', 'r') as c_file_2:
for line in c_file_2:
print(line)
ans = str(input('Якщо твердження правильне - "+". якщо ні - "-":'))
if ans == '-':
wrong_info += line
if ans == '+':
right_info += line
with open(r'new_catalog\C_file.txt', 'w') as right:
right.write(right_info)
with open(r'new_catalog\wrong_info.txt', 'w') as wrong:
wrong.write(wrong_info)
print('Записано!')
Результат виконання:

Ковальчук І.В. Арк.


Морозов Д.С. ДУ «Житомирська політехніка».21.123.10.000 – Лр6
7
Змн. Арк. № докум. Підпис Дата
Рис. 4 – Результат виконання коду

Завдання 5. Створіть порожній файл guest_book.txtу текстовому редакторі.


Напишіть програму, яказапитує у користувачів імена. При введенні кожного імені
виведіть на екран рядок з вітанням для користувача і запишіть рядок вітання у
файл з ім’ям guest_book.txt. Простежте за тим, щоб кожне повідомлення
розміщувалося в окремому рядку файлаз зазначенням часу внесення цього
повідомлення. Передбачте зазначення в файлі часу його створення і вказання в
ньому часу останніхвнесених змін.

# Завдання 5
print('Завдання 5')
with open(r'guest_book.txt', 'a', newline='\n') as guest_file:
n = int(input('Скільки користувачів: '))
name_file = os.path.abspath("guest_book.txt")
for k in range(0, n):
name = input("Яке Ваше ім'я? ")
guest_file.write(f"Здоровенькі були, {name} " + f' Час:
{time.ctime(os.path.getmtime(name_file))}\n')
print("Здоровенькі були, {}".format(name))
guest_file.write(f"Час створення файлу:
{time.ctime(os.path.getctime(name_file))} " + f" Час останніх змін файлу:
{time.ctime(os.path.getmtime(name_file))}\n")

Результат виконання:

Ковальчук І.В. Арк.


Морозов Д.С. ДУ «Житомирська політехніка».21.123.10.000 – Лр6
7
Змн. Арк. № докум. Підпис Дата
Рис. 5 – Результат виконання коду

Завдання 6. Збережіть в тектовому файлі публікацію про Pythonна 3000 слів


англійською мовою. Напишіть програму, що аналізуватиме частоту з якою в
тексті зустрічастимуться окремі літери чи слова незалежно від їх регістру.
Результат робот програми має виводитись в консоль і зберігатисьв окремому
файлі з зазначенням часу його стоврення, часу виконнання окремих змін,
результатів пошкуку і часу, що знадовся на виконнання цього пошуку.
# Завдання 6
print('Завдання 6')
py_text = ''
with open(r'python.txt', 'r') as py_info:
for line in py_info:
py_text += line
# print(py_text)
py_text_l = py_text.lower()
start = datetime.now()
all_letters = len(py_text_l) - py_text_l.count(' ') - py_text_l.count('.') -
py_text_l.count(',') - py_text_l.count('/') - py_text_l.count('!')
all_words = py_text_l.count(' ') + 1
word = len(re.findall(r'\b{}\b'.format(input()), py_text_l))
letter = len(re.findall(r'{}'.format(input()), py_text_l))
print('Частота слова в тексті: ', word / all_words)
print('Частота літери в тексті: ', letter / all_letters)
with open(r'word_info_py.txt', 'w') as word_letter:
name_file2 = os.path.abspath("word_info_py.txt")
word_letter.write(f'Частота слова в тексті: {word / all_words} ' + f'
Час виконання: {datetime.now() - start}\n')
word_letter.write(f'Частота літери в тексті: {letter / all_letters} ' + f'
Час виконання: {datetime.now() - start}\n')
word_letter.write(f"Час створення файлу:
{time.ctime(os.path.getctime(name_file2))} " + f" Час останніх змін файлу:
{time.ctime(os.path.getmtime(name_file2))}\n")

Ковальчук І.В. Арк.


Морозов Д.С. ДУ «Житомирська політехніка».21.123.10.000 – Лр6
7
Змн. Арк. № докум. Підпис Дата
Результат виконання:

Рис. 6 – Результат виконання коду

Завдання 7. Зкачайте файл marks.csvі визначте кількість студентів, що проходили


тестування. Виведіть інформацію про те яку оцінку набрали відповідна кільксть студентів.
Виведіть інформацію яку середню оцінку отримував студент за певний час виконання КМР
(крок –1 хв). Створіть текстовий файл і запишіть в нього статистику по правильним
відповідям для кожногоокремого питання (який відсоток правильних і неправильних
відповідей на питання дали студенти). В цей же файл внесіть інформацію про 5 найкращих
оцінок в співвідношенні оцінка/час витрачений складання КМР.
# Завдання 7
print('Завдання 7')
count = 0
count1 = 0
right, wrong = 0, 0
with open('marks.lab6.csv', 'rt') as file_6_csv:
creading = csv.reader(file_6_csv)
creading = csv.DictReader(file_6_csv,
fieldnames=['ПІБ', 'початок', 'кінець', 'час', 'оцінка', '1', '2', '3', '4',
'5', '6',
'7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19',
'20'])
mark = input("Оцінка: ")
student = input("Студент: ")
for row in creading:
if row['оцінка'] == mark:
count1 += 1
if row['ПІБ'] == student:
t = [int(s) for s in row['час'].split() if s.isdigit()]
m = re.findall('(\d+)', row['оцінка'])
ser = int(m[0]) / t[0]
print("Частота оцінки: ", count1)
print("Середня оцінка за хвилину: ", round(ser, 1))

with open('marks.lab6.csv', 'rt') as file_6_c:


creading = csv.reader(file_6_c)
marks = [row for row in creading]
print('К-сть студентів: ', len(marks))
for k in range(0, 170):
print('Оцінка: ', marks[k][4])
with open('answer.txt', 'w') as file_6:
for k in range(4, 24):
for i in range(0, 170):
if marks[i][k] == '0,00':

Ковальчук І.В. Арк.


Морозов Д.С. ДУ «Житомирська політехніка».21.123.10.000 – Лр6
7
Змн. Арк. № докум. Підпис Дата
count += 1
wrong = count / 170
right = 100 - wrong
print(f"Правильних відповідей {k - 3} питання:"+str(round(right, 1))+"%")
file_6.write(f"Правильних відповідей {k - 3} питання:"+str(round(right,
1))+"%\n")
file_6.write(f"НЕправильних відповідей {k - 3} питання:"+str(round(wrong,
1))+"%\n")
Результат виконання:

Рис. 7 – Результат виконання коду

Висновок: ознайомиЛися з засобами роботи з файлами в мові Python, діями над


ними.

Ковальчук І.В. Арк.


Морозов Д.С. ДУ «Житомирська політехніка».21.123.10.000 – Лр6
7
Змн. Арк. № докум. Підпис Дата

You might also like