С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/27: Рейтинг темы: голосов - 27, средняя оценка - 4.81
 Аватар для Orlov1
100 / 42 / 7
Регистрация: 03.02.2019
Сообщений: 655

Рекурсивный поиск файлов по маске + копирование

22.06.2021, 22:21. Показов 5441. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго вечера.

Имеется код, который выполняет рекурсивный поиск в каталоге С:\\MyFolder и подкаталогах по маске (расширению) файла.

1. Подскажите как скопировать все найденные папки в каталог Find. В данном каталоге найденные файлы разложить по подкаталогам JPG и TXT соответственно расширениям найденных файлов
2. В данном случае в result.txt записывается только имя файла с расширением. Как записывать полный путь + файла с расширением.
3. Записывается текст в кодировке utf-8, имена файлов на русском отображаются корректно. При этом в консоли имена файлов на русском отображаются не корректно. Как установить кодировку для вывода в консоль ?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import os
from os.path import expanduser
import shutil
 
path = 'С:\\MyFolder'
 
fnames = ([file for root, dirs, files in os.walk(path)
    for file in files
    if file.endswith('.jpg') or file.endswith('.txt') #or file.endswith('.pdf')
])
 
myfile = open ("C:\\result.txt", 'w', encoding='utf-8')
 
for fname in fnames: 
    print(fname)
    myfile.write(fname + '\n')
myfile.close
Благодарю за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.06.2021, 22:21
Ответы с готовыми решениями:

Рекурсивный поиск и копирование найденных файлов
Всем привет! Нужна помощь по коду питона. Код должен искать файлы с расширением .jpeg на рабочем столе и копировать в отдельную папку. ...

Провести рекурсивный поиск файлов по маске
всем привет необходимо провести рекурсивный поиск файлов по маске, использую Winapi, а именно Findfirstfile, findnextfile, findclose. ...

Поиск файлов по маске и их копирование
Нужен скрипт который будет осуществлять поиск файлов с расширениями *.doc *.docx *.txt по заданному пути(ям) (имя файлов любое) И что бы...

1
0 / 0 / 0
Регистрация: 28.02.2018
Сообщений: 11
08.02.2023, 07:45
Python
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
import re
import shutil
from pathlib import Path
from tkinter import filedialog
 
 
jpg_list = []
txt_list = []
 
 
def recursive_file_search(path):
    for root, dirs, files in os.walk(path):
        for name in files:
            file_full_path = os.path.join(root, name)
            name_file = os.path.splitext(file_full_path)
 
            if re.match(re.compile(r'\.jpg$', re.IGNORECASE), name_file[1]) is not None:
                fil_item = str("".join(name_file))
                # print(fil_item)
                jpg_list.append(fil_item)
 
            if re.match(re.compile(r'\.txt$', re.IGNORECASE), name_file[1]) is not None:
                fil_item = str("".join(name_file))
                # print(fil_item)
                txt_list.append(fil_item)
 
    for jpg in jpg_list:
        if jpg:
            save_files(jpg, path, 'JPG')
    for txt in txt_list:
        if txt:
            save_files(txt, path, 'TXT')
 
    save_result_to_file(jpg_list, txt_list)
 
 
def save_result_to_file(jpg, txt):
    file = open(str(Path('D:/result.txt')), "w+", encoding='utf-8')     # Запись путей в файл
 
    if jpg:
        file.write(f"JPG:\n")
        for item in jpg:
            file.write(f"{item}\n")
    if txt:
        file.write(f"TXT:\n")
        for item in txt:
            file.write(f"{item}\n")
 
    file.close()
 
 
def save_files(name_file, path_h, folder_name):
    if name_file and path_h:
        if not os.path.exists(Path(path_h, 'Find', folder_name)):
            os.mkdir(Path(path_h, 'Find'))
            os.mkdir(Path(path_h, 'Find', folder_name))
        if os.path.exists(Path(path_h, 'Find', folder_name)):
            print(name_file)
            if os.path.isfile(Path(name_file)):
                shutil.copy(Path(name_file), Path(path_h, 'Find', folder_name))
 
 
path_selection = str(Path(filedialog.askdirectory()))   # Директория поиска
 
if path_selection:
    recursive_file_search(path_selection)
else:
    pass
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.02.2023, 07:45
Помогаю со студенческими работами здесь

Поиск и копирование двух файлов по маске
Проблема такая - я совершеннейший нуб в C#, только недавно решил его начать изучать. Мне нужно реализовать поиск и копирование двух...

Удаление файлов по маске, переименование файлов, копирование фалов на ftp, выборка текста из файлов
Написал батник и макросы в excel который делает то, что перечислено в заголовке. Решил перевести это на C#. И сразу столкнулся с...

Как реализовать рекурсивный поиск по маске?
Здравствуйте!Гуглил где только мог...,но все примеры идут на других языках,а не на шарпе. Нужно реализовать поиск файлов например на диске...

Копирование файлов по маске
Подскажите, как скопировать файлы с нужным расширением из одной папки в другую. Желательно, с индикатором копирования. Буду благодарен за...

Копирование файлов по маске *.*
Подскажите пожалуйста как копировать файлы по маске *.* Всюду нахожу только CopyFile(sourceFileName, destFileName)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru