Программа составить список файлов

Для реализации подобной задачи можно использовать несколько способов.

Способ 1. Скелет из шкафа — функция ФАЙЛЫ

Этот способ использует древнюю функцию ФАЙЛЫ (FILES) , оставшуюся в Microsoft Excel с далеких девяностых. Вы не найдете эту функцию в общем списке функций, но для совместимости, она всё ещё остаётся внутри движка Excel, и мы вполне можем её использовать.

1. В любую ячейку листа (например, в А1) введём путь к папке, список файлов из которой мы хотим получить.

Путь к папке

Обратите внимание, что путь должен оканчиваться шаблоном со звездочками:

2. Создадим именованный диапазон с помощью вкладки Формулы — далее кнопка Диспетчер имен — Создать (Formulas — Names Manger — Create) . В открывшемся окне введем любое имя без пробелов (например Мои_файлы) и в поле диапазона выражение:

Создаем именованный диапазон с функцией ФАЙЛЫ

Как получить список файлов в папке?

После нажатия на ОК будет создан именованный диапазон с именем Мои_файлы, где хранится список всех файлов из указанной в А1 папки. Останется их оттуда только извлечь.

3. Чтобы извлечь имена отдельных файлов из созданной переменной, используем функцию ИНДЕКС (INDEX) , которая в Excel вытаскивает данные из массива по их номеру:

Список файлов

Если лениво делать отдельный столбец с нумерацией, то можно воспользоваться костылем в виде функции СТРОКИ (ROWS) , которая будет подсчитывать количество заполненных строк с начала списка автоматически:

=ИНДЕКС(Мои_файлы; ЧСТРОК($B$3:B3) )

Ну, и скрыть ошибки #ССЫЛКА! в конце списка (если вы протягиваете формулу с запасом) можно стандартной функцией ЕСЛИОШИБКА (IFERROR) :

= ЕСЛИОШИБКА( ИНДЕКС(Мои_файлы; ЧСТРОК($B$3:B3)) ; «»)

Важное примечание : формально функция ФАЙЛЫ относится к макро-функциям, поэтому необходимо будет сохранить ваш файл в формате с поддержкой макросов (xlsm или xlsb).

Способ 2. Готовый макрос для ленивых

Если вы знакомы с макросами (не в смысле их программирования, а в смысле копипастинга готовых кодов на VBA), то вам, возможно, отлично зайдёт небольшой макрос, добавляющий в текущую книгу новый пустой лист и выводящий на него список всех файлов с их параметрами из заданной пользователем папки.

Для добавления макроса в вашу книгу нажмите сочетание клавиш Alt + F11 , или кнопку Visual Basic на вкладке Разработчик (Developer) , в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert — Module и скопируйте туда текст этого макроса:

Sub FileList() Dim V As String Dim BrowseFolder As String ‘открываем диалоговое окно выбора папки With Application.FileDialog(msoFileDialogFolderPicker) .Title = «Выберите папку или диск» .Show On Error Resume Next Err.Clear V = .SelectedItems(1) If Err.Number <> 0 Then MsgBox «Вы ничего не выбрали!» Exit Sub End If End With BrowseFolder = CStr(V) ‘добавляем лист и выводим на него шапку таблицы ActiveWorkbook.Sheets.Add With Range(«A1:E1») .Font.Bold = True .Font.Size = 12 End With Range(«A1»).Value = «Имя файла» Range(«B1»).Value = «Путь» Range(«C1»).Value = «Размер» Range(«D1»).Value = «Дата создания» Range(«E1»).Value = «Дата изменения» ‘вызываем процедуру вывода списка файлов ‘измените True на False, если не нужно выводить файлы из вложенных папок ListFilesInFolder BrowseFolder, True End Sub Private Sub ListFilesInFolder(ByVal SourceFolderName As String, ByVal IncludeSubfolders As Boolean) Dim FSO As Object Dim SourceFolder As Object Dim SubFolder As Object Dim FileItem As Object Dim r As Long Set FSO = CreateObject(«Scripting.FileSystemObject») Set SourceFolder = FSO.getfolder(SourceFolderName) r = Range(«A65536»).End(xlUp).Row + 1 ‘находим первую пустую строку ‘выводим данные по файлу For Each FileItem In SourceFolder.Files Cells(r, 1).Formula = FileItem.Name Cells(r, 2).Formula = FileItem.Path Cells(r, 3).Formula = FileItem.Size Cells(r, 4).Formula = FileItem.DateCreated Cells(r, 5).Formula = FileItem.DateLastModified r = r + 1 X = SourceFolder.Path Next FileItem ‘вызываем процедуру повторно для каждой вложенной папки If IncludeSubfolders Then For Each SubFolder In SourceFolder.SubFolders ListFilesInFolder SubFolder.Path, True Next SubFolder End If Columns(«A:E»).AutoFit Set FileItem = Nothing Set SourceFolder = Nothing Set FSO = Nothing End Sub

Для запуска макроса нажмите сочетание клавиш Alt + F8 ,или кнопку Макросы (Macros) на вкладке Разработчик (Developer) , выберите наш макрос FileList и нажмите кнопку Выполнить (Run) . В диалоговом окне выберите любую папку или диск и — вуаля!

3 способа получить список файлов в папке

Если захотите, чтобы вместо пути к файлу в столбце B выводилась живая гиперссылка, то замените 52-ю строку

Cells(r, 2).Formula = FileItem.Path

Cells(r, 2).Formula = «=HYPERLINK(«»» «»»)»

Способ 3. Мощь и красота — надстройка Power Query

Power Query — это очень мощная и при этом бесплатная надстройка для Excel от Microsoft, упрощающая множество задач по загрузке и трансформации данных. В нашей ситуации она тоже может здорово помочь.

Если у вас Excel 2016 или новее, то Power Query уже встроена в Excel по умолчанию, поэтому просто на вкладке Данные выберите команду Создать запрос / Получить данные — Из файла — Из папки (Create Query / Get Data — From file — From folder) . Если у вас Excel 2010-2013, то Power Query нужно будет скачать с сайта Microsoft и установить как отдельную надстройку и она появится у вас в Excel в виде отдельной вкладки Power Query. На ней будет аналогичная кнопка Из файла — Из папки (From file — From folder) .

Читайте также:
Как создать группу программ на андроиде

В открывшемся окне нужно будет указать папку, содержимое которой мы хотим получить. После нажатия на ОК Power Query обшарит указанную папку и все вложенные подпапки и выдаст на экран окно с предварительным просмотром результатов:

Предварительный просмотр списка файлов в Power Query

Если внешний вид списка вас устраивает, то можно смело жать внизу кнопку Загрузить (Load) , чтобы залить эти данные на новый лист. Если же хочется дополнительно обработать список (удалить лишние столбцы, отобрать только нужные файлы и т.п.), то нужно выбрать команду Изменить / Преобразовать данные (Edit / Transform Data).

Поверх окна Excel откроется окно редактора Power Query, где мы увидим список всех наших файлов в виде таблицы:

Окно Power Query

Дальше возможны несколько вариантов:

    Если нужны только файлы определенного типа, то их можно легко отобрать с помощью фильтра по столбцу Extension:

Фильтр по расширению файла

Фильтры по дате

Фильтры по пути и папкам

После того, как необходимые файлы отобраны, можно смело удалить ненужные столбцы, щелкнув по заголовку столбца правой кнопкой мыши и выбрав команду Удалить (Remove column ) . Это, кстати, уже никак не повлияет на фильтрацию или сортировку нашего списка:

Готовый список

Если в будущем планируется подсчитывать количество файлов в каждой папке (например, для контроля поступивших заявок или подсчета статистики по заявкам), то имеет смысл дополнительно сделать ещё пару действий:

  • Щелкните правой кнопкой мыши по столбцу Folder Path и выберите команду Дублировать столбец (Duplicate Column) .
  • Выделите скопированный столбец и на вкладке Преобразование (Transform) выберите Разделить столбец — По разделителю (Split Column — By delimiter)

Как получить список файлов из папки в текстовом виде

Как получить список файлов из папки в текстовом виде

Как установить Windows 10

Всем привет! Сегодня поговорим про то как сохранить список файлов в папке в текстовый документ. Итак, поехали!

Сделать перечень файлов в папке возможно различными методами: при поддержке командной строчки, при поддержке файла, который содержит расширение «.bat», при поддержке особых программ, сберечь перечень в браузере.

Сбережение перечня файлов с поддержкой командной строчки

Вначале вам нужно перебежать к необходимой папке, или же диску, в случае если вы желаете получить перечень файлов, которые присутствуют на диске.

Впоследствии открытия папки или же диска, удерживая на клавиатуре кнопку «Shift», кликните правой кнопкой мыши изнутри данной папки. В открывшемся контекстном рационы изберите место «Открыть окошко команд».

Как получить список файлов из папки в текстовом виде

Впоследствии сего раскроется окошко консоли, в которой уже станет указан дорога к необходимой директории (в вашем случае, станет к что папке, которую вы откроете). В данном случае, это папка «Программы» на Рабочем столе моего компа. В данной папке присутствуют иные папки, в коих присутствуют ярлычки программ.

Как получить список файлов из папки в текстовом виде

Дальше надо станет установить 1 из данных команд:

dir /b>filelist.txt

Впоследствии ввода «dir» обязан быть пробел. Взамен «filelist» имеет возможность составить свое заглавие файла, лишь только латинскими знаками. Не позабудьте в конце прибавить формат «.txt».

Эти команды выделяются приятель от приятеля в применении добавочных критериев хранения перечня файлов:

/b — означает, собственно что станут сохранены лишь только имена файлов.

/s — означает, собственно что дополнительно в перечень станут интегрированы все файлы и подкаталоги (подпапки), которые присутствуют в данной папке.

Как получить список файлов из папки в текстовом виде

Вслед за тем на клавиатуре нажмите на кнопку «Enter».

Впоследствии сего вы сможете обнаружить папку и увидать, собственно что в папке располагается текстовый файл «filelist». Ныне сможете обнаружить данный файл с поддержкой Блокнота.

В случае если в предоставленной папке кое-какие файлы имели российские имена, то взамен имен данных файлов, вы увидите странные знаки (крякозябры). Дело в том, собственно что программка Блокнот не осознает шифровку MS-DOS.

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

Кликните по текстовому файлу правой кнопкой мыши, а вслед за тем в контекстном рационы изберите место «Открыть с помощью». Изберите для открытия файла программку Microsoft Office Word. В окошке программки Word станет не закрыто окошко «Преобразование текста», в котором надо станет избрать шифровку MS-DOS, которая дозволит прочесть данный документ.

На образчике вы увидите верное отражение слова.

Как получить список файлов из папки в текстовом виде

Впоследствии нажатия на кнопку «ОК», этот слово станет не закрыт в программке Word.

Вы сможете выполнить редактирование документа, а затем сберечь его на компе в подходящем формате, в что количестве в формате «TXT». Задач с шифровкой впоследствии хранения файла уже не станет.

Получение перечня файлов в папке с поддержкой bat файла

Раз из самых дешевых и несложных методик получения перечня файлов в папке: внедрение для сего особого bat файла. Есть некоторое количество разновидностей сотворения файла с расширением «.bat», с различным кодом.

Читайте также:
Программа чтобы украшать ники

Для сотворения bat файла для вас надо станет обнаружить Блокнот, а вслед за тем воткнуть туда данный код:

chcp 1251
echo %date% %time% >filelist.txt
dir /b /d >>filelist.txt

Сбережете данный файл, имя файлу сможете предоставить каждое, самому файлу надо предоставить расширение «BAT». Характеристики хранения файла в Блокноте станут смотреться приблизительно так:

Имя файла: filelist.bat

Образ файла: Все файлы

Впоследствии сего нажмите на кнопку «Сохранить».

Дальше помещаете разработанный файл в ту папку, из которой вы желаете получить, перечень оказавшихся там файлов. Впоследствии сего, запустите файл с расширением «.bat». В предоставленной папке станет сотворен файл «filelist» в формате «.txt», в котором станет пребывать перечень файлов.

Есть некоторое количество разновидностей содержимого файла с расширением «.bat». При применении сего способа, задач с шифровкой не появится.

Программка DirLister для получения перечня файлов

Вы сможете сделать перечень файлов находящихся в папке, при поддержке даровой программки DirLister. Данная крохотная программка не настятельно просит установки на компьютер. Впоследствии загрузки программки на личный компьютер, распакуйте картотека с программкой.

Для пуска программки, откройте папку с программкой, а затем кликните по приложению DirLister.

В окошке программки DirLister, в разделе «Directory To Scan», при поддержке кнопки «Open», для вас надо станет избрать папку для сканирования.

В разделе «Output File», при поддержке кнопки «Save As…», для вас нужно станет избрать пространство для хранения перечня файлов.

Вы сможете уточнить аспекты розыска файлов по маске «*.*», выбрав необходимое имя или же образ файла («TXT», «Excel», «HTML» и т. д.).

Впоследствии выбора важных опций, нажмите на кнопку «Make List».

Как получить список файлов из папки в текстовом виде

Впоследствии окончания сканирования в левом нижнем углу программки станет выведена информация об успешном окончании сотворения перечня файлов: «All file processed correctly».

Программка DirLister выводит не лишь только перечень файлов в предоставленной папке, но и выделяет совершенную информацию о вложенных в данную папку файлах и папках, в что количестве о объеме файлов.

Получаем перечень файлов в Total Commander

Получить перечень файлов в папке возможно при поддержке известного файлового менеджера Total Commander. Для сего, раскрываете в окошке программки подходящую папку.

В окне «Выделение», в начале избираете место «Выделить всё». Впоследствии такого, как все файлы были уделены, в данном же рационы избираете место «Копировать имена в буфер».

Как получить список файлов из папки в текстовом виде

Затем раскрываете Блокнот или же иной текстовый редактор, и вставляете туда перечень файлов из буфера обмена.

Вы сможете в рационы «Выделение» избрать место «Сохранить выделение в файл…». В данном случае, для вас надо станет предоставить имя файлу, а вслед за тем сберечь его в формате «TXT».

Получить перечень файлов в папке при поддержке браузера

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

Дальше сможете элементарно скопировать перечень файлов в текстовый редактор, сберечь перечень в HTML файл, или же сберечь в PDF при поддержке виртуального принтера.

Как получить список файлов из папки в текстовом виде

Выводы заметки

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

Источник: user-life.com

Получение списка файлов в директории на Python

Всё чаще современные программисты предпочитают работать с языком программирования Python, потому что он очень гибкий, позволяющий легко взаимодействовать с операционной системой. Он также поставляется с функциями по работе с файловой системой. Решение задачи распечатки списка файлов в директории можно решить используя разные модули: os, subprocess, fnmatch и pathlib. Следующие решения демонстрируют, как успешно воспользоваться этими модулями.

Применение os.walk()

Модуль os содержит длинный список методов, которые касаются работы с файловой системой и операционной системой. Один из них walk(), возвращающий имена файлов в дереве каталогов, двигаясь по дереву сверху вниз или снизу вверх (сверху вниз по умолчанию).

os.walk() возвращает список из трех элементов: имя корневого каталога, список имен вложенных папок и список файлов в текущем каталоге. Он одинаково хорошо работает с интерпретаторами Python 2 и 3.

import os for root, dirs, files in os.walk(«.»): for filename in files: print(filename)

Использование командной строки, через subprocess

Модуль subprocess позволяет выполнить системную команду и собрать её результат. В нашем случае вызываемая системная команда выглядит следующим образом:

$ ls -p . | grep -v /$

Инструкция ls -p . распечатывает список файлов текущего каталога, добавляя разделитель / в конце имени каждого подкаталога, которые нам понадобится на следующем шаге. Вывод этого вызова передается команде grep, которая отфильтровывает данные по мере поступления. Параметры -v / $ исключают все имена записей, которые заканчиваются разделителем /. Фактически / $ — регулярное выражение, которое соответствует всем строкам, содержащим символ / самым последним символом в строке, который определяется символом $.

Читайте также:
Как удалить программу с iPhone 5s

Модуль subprocess позволяет строить настоящие конвейеры, а также соединять входные и выходные потоки, как это делается в командной строке. Вызов метода subprocess.Popen() открывает соответствующий процесс и определяет два параметра stdin и stdout.

Первая переменная ls определяет процесс выполнения ls –p для захвата stdout в конвейере. Поэтому поток stdout определяется как subprocess.PIPE. Вторая переменная grep также определяется как процесс, но вместо этого выполняет инструкцию grep –v /$.

Чтобы прочитать вывод команды ls из конвейера, поток stdin grep присваиваивается в ls.stdout. В заключение, переменная endOfPipe считывает вывод команды grep из grep.stdout, затем распечатывается в stdout циклом for.

import subprocess # определение команды ls ls = subprocess.Popen([«ls», «-p», «.»], stdout=subprocess.PIPE, ) # определение команды grep grep = subprocess.Popen([«grep», «-v», «/$»], stdin=ls.stdout, stdout=subprocess.PIPE, ) # чтение из данных из потока stdout endOfPipe = grep.stdout # распечатка файлов в строку for line in endOfPipe: print(line)
$ python find-files3.py find-files2.py find-files3.py find-files4.py .

Данное решение работает достаточно хорошо с Python 2 и 3, но его можно улучшить. Рассмотрим другие варианты.

Комбинация os и fnmatch

Решение, использующее подпроцессы, элегантно, но требует большого количества кода. Вместо этого, давайте объединим методы из двух модулей os и fnmatch. Этот вариант также работает с Python 2 и 3.

В качестве первого шага, импортируем модули os и fnmatch. Далее определим каталог, в котором нужно перечислить файлы, используя os.listdir(), а также шаблон для фильтрации файлов. В цикле for выполняется итерация списка записей, хранящихся в переменной listOfFiles.

В завершение, с помощью fnmatch отфильтровываются искомые записи и распечатываются соответствующие записи в stdout.

import os, fnmatch listOfFiles = os.listdir(‘.’) pattern = «*.py» for entry in listOfFiles: if fnmatch.fnmatch(entry, pattern): print(entry)
$ python find-files.py find-files.py find-files2.py find-files3.py .

Использование os.listdir() и генераторов

Следующий вариант объединяет метод os.listdir() с функцией генератором. Код работает как с версиями 2, так и с 3 Python.

Как уже было сказано ранее, listdir() возвращает список записей для данного каталога. Метод os.path.isfile() возвращает True, если данная запись является файлом. Оператор yield завершает работу функции, но сохраняя текущее состояние и возвращает только имя записи являющейся файлом.

import os def files(path): for file in os.listdir(path): if os.path.isfile(os.path.join(path, file)): yield file for file in files(«.»): print(file)

Использование pathlib

Модуль pathlib предназначен для парсинга, сборки, тестирования и иной работы с именами файлов и их путями, используя объектно-ориентированный API вместо низкоуровневых строковых операций. Начиная с Python 3 модуль находится в стандартной библиотеке.

В следующем листинге определяется текущий каталог точкой («.»). Затем метод iterdir() возвращает итератор, который возвращает имена всех файлов. Далее циклом for распечатываются имена файлов друг за другом.

import pathlib # определение пути currentDirectory = pathlib.Path(‘.’) for currentFile in currentDirectory.iterdir(): print(currentFile)

В качестве альтернативы, можно отфильтровать файлы по именам с помощью метода glob. Таким образом, получаем требуемые файлы. Например, в приведенном ниже коде перечисляются Python файлы в выбранном каталоге, указав шаблон «*.py» в glob.

import pathlib # определение пути currentDirectory = pathlib.Path(‘.’) # определение шаблона currentPattern = «*.py» for currentFile in currentDirectory.glob(currentPattern): print(currentFile)

Использование os.scandir()

В Python 3.6 добавлен новый метод scandir(), доступный из модуля os. Как понятно из названия он значительно упрощает получение списка файлов в каталоге.

Чтобы определить текущий рабочий каталог и сохранить его, инициализируем значение переменной path, для этого импортируем модуль os и вызовем функцию getcwd(). Далее, scandir() возвращает список записей для выбранного пути, которые проверяются на принадлежность файлу, используя метод is_file().

import os # определение текущей рабочей директории path = os.getcwd() # чтение записей with os.scandir(path) as listOfEntries: for entry in listOfEntries: # печать всех записей, являющихся файлами if entry.is_file(): print(entry.name)

Вывод

Ведутся споры, какой вариант является лучшим, какой наиболее элегантным и какой является наиболее «питоничным». Мне нравится простота метода os.walk(), а также модули fnmatch и pathlib.

Две версии с процессами/конвейером и итератором требуют более глубокого понимания процессов UNIX и знаний Python, поэтому они не могут быть предпочтительными для всех программистов из-за их дополнительной (и избыточной) сложности.

Чтобы найти ответ на этот вопрос, выберем самой быстрой из них, воспользовавшись удобным модулем timeit. Данный модуль подсчитывает время, прошедшее между двумя событиями.

Для сравнения всех решений без их изменений, воспользуемся функциональностью Python: вызовем интерпретатор с модулем timeit и соответствующим Python скриптом. Для автоматизации процесса напишем shell скрипт

#! /bin/bash for filename in *.py; do echo «$filename:» cat $filename | python3 -m timeit echo » » done

Тесты проводились с использованием Python 3.6. Среди всех тестов os.walk() показала себя наилучшим образом. Выполнение тестов с помощью Python 2 возвращает разные значения, но os.walk() по-прежнему находится на вершине списка.

Источник: digitology.tech

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru