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

orlov1

Новичок
Пользователь
Июн 23, 2021
52
2
8
Всем привет!
Нужна помощь по коду питона. Код должен искать файлы с расширением .jpeg на рабочем столе и копировать в отдельную папку.

Python:
from os import path
import os
from shutil import copy

user_name = (os.getlogin())

def get_files(file_path):
    
        foo = os.listdir(file_path)
    
        foo = list(map(lambda x: file_path+"/"+x, foo))
    
        dirs = list(filter(path.isdir, foo))
    
        files = list(filter(path.isfile, foo))
    
        for file in files:
        
                extension = file[file.rfind('.')+1:]
            
                if extension == 'jpeg':
            
                    copy(file, "C:\\Find/jpeg/")                                 
                    
        for dir in dirs:
        
            get_files(dir)

dirname = ('C:\\Users\\' + user_name + '\\Desktop')

assert path.isdir(dirname)

get_files(dirname)

Компилятор вдает ошибку:

Код:
line 31, in <module>
    assert path.isdir(dirname)
AssertionError

Помогите разобраться. В чем проблема ?

Благодарю.
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
Код должен искать файлы с расширением .jpeg на рабочем столе и копировать в отдельную папку
если так, то неужели покороче нельзя? видимо там что-то ещё?
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
если так, то неужели покороче нельзя? видимо там что-то ещё?
ну если можно покороче то покажите, почему вы всегда что то утверждаете в шуточной форме, но по делу ничего не говорите?
 

orlov1

Новичок
Пользователь
Июн 23, 2021
52
2
8
если так, то неужели покороче нельзя? видимо там что-то ещё?
Приведите пример кода как можно покороче. Если бы я знал как можно покороче, не обращался бы за помощью.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Всем привет!
Нужна помощь по коду питона. Код должен искать файлы с расширением .jpeg на рабочем столе и копировать в отдельную папку.

Python:
from os import path
import os
from shutil import copy

user_name = (os.getlogin())

def get_files(file_path):
  
        foo = os.listdir(file_path)
  
        foo = list(map(lambda x: file_path+"/"+x, foo))
  
        dirs = list(filter(path.isdir, foo))
  
        files = list(filter(path.isfile, foo))
  
        for file in files:
      
                extension = file[file.rfind('.')+1:]
          
                if extension == 'jpeg':
          
                    copy(file, "C:\\Find/jpeg/")                               
                  
        for dir in dirs:
      
            get_files(dir)

dirname = ('C:\\Users\\' + user_name + '\\Desktop')

assert path.isdir(dirname)

get_files(dirname)

Компилятор вдает ошибку:

Код:
line 31, in <module>
    assert path.isdir(dirname)
AssertionError

Помогите разобраться. В чем проблема ?

Благодарю.
у вас срабатывает ассерт, так как путь dirname не существует или не доступен

upd
возможно, проблема в имени пользователя на кириллице
 
Последнее редактирование:

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Всем привет!
Нужна помощь по коду питона. Код должен искать файлы с расширением .jpeg на рабочем столе и копировать в отдельную папку.

Python:
from os import path
import os
from shutil import copy

user_name = (os.getlogin())

def get_files(file_path):
 
        foo = os.listdir(file_path)
 
        foo = list(map(lambda x: file_path+"/"+x, foo))
 
        dirs = list(filter(path.isdir, foo))
 
        files = list(filter(path.isfile, foo))
 
        for file in files:
  
                extension = file[file.rfind('.')+1:]
      
                if extension == 'jpeg':
      
                    copy(file, "C:\\Find/jpeg/")                           
              
        for dir in dirs:
  
            get_files(dir)

dirname = ('C:\\Users\\' + user_name + '\\Desktop')

assert path.isdir(dirname)

get_files(dirname)

Компилятор вдает ошибку:

Код:
line 31, in <module>
    assert path.isdir(dirname)
AssertionError

Помогите разобраться. В чем проблема ?

Благодарю.
только что запустил ваш код, все работает...
единственное, нет проверки на существование C:/Find/jpeg/

upd
и бывает еще jpg файлы
 
Последнее редактирование:

orlov1

Новичок
Пользователь
Июн 23, 2021
52
2
8
только что запустил ваш код, все работает...
единственное, нет проверки на существование C:/Find/jpeg/

upd
и бывает еще jpg файлы
Какая ОС ? На Win 10 RU работать не будет. Там путь другой до Desktop. На русском User/Рабочий стол/.
Если у вас Win 10 EN или Win 7, да должно работать.
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Какая ОС ? На Win 10 RU работать не будет. Там путь другой до Desktop. На русском User/Рабочий стол/.
Если у вас Win 10 EN или Win 7, да должно работать.
win 10 ru
 

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
25
28
Код:
import os
pth = r'd:'
# print(os.path.isdir(pth))
if os.path.isdir(pth):
    rez = sorted(os.listdir(pth))
    print(rez)
else:
    print(f'Указанный путь: {pth} не существует, программа не будет продолжаться')
    exit(0)
а потом (или сразу) из списка rez пошагово jpeg\jpg файлы копируйте куда надо, как их найти у Вас верно уже сделано, поправка для двух типов файлов:
Код:
if file[file.rfind('.')+1:] ==  "jpeg" or file[file.rfind('.')+1:] == "jpg":
 

Форум IT Специалистов