-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path7.files.task_3.py
More file actions
47 lines (41 loc) · 1.99 KB
/
7.files.task_3.py
File metadata and controls
47 lines (41 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# Задача №3
# В папке лежит некоторое количество файлов. Считайте, что их количество и имена вам заранее известны, пример для
# выполнения домашней работы можно взять тут
#
# Необходимо объединить их в один по следующим правилам:
#
# Содержимое исходных файлов в результирующем файле должно быть отсортировано по количеству строк в них (то есть первым
# нужно записать файл с наименьшим количеством строк, а последним - с наибольшим)
# Содержимое файла должно предваряться служебной информацией на 2-х строках: имя файла и количество строк в нем
# Пример Даны файлы: 1.txt
#
# Строка номер 1 файла номер 1
# Строка номер 2 файла номер 1
# 2.txt
#
# Строка номер 1 файла номер 2
# Итоговый файл:
#
# 2.txt
# 1
# Строка номер 1 файла номер 2
# 1.txt
# 2
# Строка номер 1 файла номер 1
# Строка номер 2 файла номер 1
import os
def sort_files():
files = os.listdir('files_7.3')
result = []
for file_ in files:
with open(f'files_7.3/{file_}', 'r', encoding='utf8') as f:
text = f.read()
f.seek(0)
result.append({'name': file_, 'count_lines': len(f.readlines()), 'text': text})
sorted_files = sorted(result, key=lambda f: f['count_lines'])
with open('files_7.3/result.txt', 'w', encoding='utf8') as f:
for file_ in sorted_files:
f.write(file_['name']+'\n')
f.write(str(file_['count_lines'])+'\n')
f.write(file_['text']+'\n')
sort_files()