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

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

22.06.2021, 22:21. Показов 5496. Ответов 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
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru