Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 16, 2020 02:39:19

The_Immortal
Зарегистрирован: 2020-09-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Список файлов в корневой директории

Приветствую!


Необходимо получить список файлов в заданной директории, не заходя при этом в другие поддиректории, и сравнить этот список с заранее предопределенным списком. Пробую так:

 import os
from os import walk
source_files = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx'']
upload_files = []
downpath = r'\\server\to_upload'
for files in os.walk(downpath):
    for _file in files:
        if _file in source_files:
           upload_files.append(_file)

Положим, что в каталоге \\server\to_upload находится следующее:
 \\server\to_upload\file1.xlsx
\\server\to_upload\nofile1.xlsx
\\server\to_upload\file2.xlsx
\\server\to_upload\nofile2.xlsx
\\server\to_upload\somedir\file1.xlsx
\\server\to_upload\somedir\file2.xlsx

В соответствии с указанным мною выше сравнение мне нужно получить следующий список файлов:
 \\server\to_upload\file1.xlsx
\\server\to_upload\file2.xlsx

Проблемы две:

1. В каталоге \\server\to_upload помимо поисковых файлов находятся другие каталоги и os.walk в них заходит в поисках уже не нужных файлов, например таких как \\server\to_upload\somedir\file1.xlsx и \\server\to_upload\somedir\file2.xlsx. Мне же надо искать только файлы и только внутри “\\server\to_upload”

2. Несмотря на то, что находятся искомые файлы, сравнение if _file in source_files: почему-то не срабатывает.

Просьба помочь разобраться в решении.

Спасибо!

Отредактировано The_Immortal (Сен. 16, 2020 03:07:21)

Офлайн

#2 Сен. 16, 2020 04:41:39

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1395
Репутация: +  124  -
Профиль   Отправить e-mail  

Список файлов в корневой директории

у себя вот так попробовал

 import os
directory = r'D:\схемы'
files = os.listdir(directory)
print(files)
filter_files = filter(lambda f: f.endswith('.gif'),files)
for i in filter_files:
	print(i)

а так если полностью название
 filter_files = filter(lambda f: f=='блок питания жк.jpg',files)

Отредактировано xam1816 (Сен. 16, 2020 04:44:29)

Офлайн

#3 Сен. 16, 2020 12:14:40

delvin-fil
Зарегистрирован: 2015-11-27
Сообщения: 95
Репутация: +  4  -
Профиль   Отправить e-mail  

Список файлов в корневой директории

здесь посмотрите



 import __hello__

Офлайн

#4 Сен. 16, 2020 13:00:17

The_Immortal
Зарегистрирован: 2020-09-08
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Список файлов в корневой директории

xam1816
у себя вот так попробовал
Таким образом в список каталоги также попадают, фильтр почему-то не срабатывает. Да и мне не надо фильтровать по расширению… Нужно просто получить список файлов в корневом каталоге и найти совпадения с заранее предопределенным списком файлов.

Подсказали:
 import glob, os
source_files = ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']
upload_files = []
downpath = os.chdir(r'\\server\to_upload')
for _file in glob.glob("*.*"):
    if _file in source_files:
        upload_files.append(_file)

Отредактировано The_Immortal (Сен. 16, 2020 13:19:49)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version