Как вывести название файла
Когда пользователь выбирает файл на веб-странице, я хочу иметь возможность извлечь только имя файла.
Я пробовал использовать функцию str.search, но она перестала работать, когда имя файла примерно такое: c: \ uploads \ ilike.this.file.jpg .
Как мы можем извлечь только имя файла без расширения?
В настоящее время существует гораздо более простой способ:
Я предполагаю, что вы хотите удалить все расширения, то есть /tmp/test/somefile.tar.gz в somefile .
Прямой подход с регулярным выражением:
Альтернативный подход с использованием регулярных выражений и работы с массивами:
Я думаю, что это должно быть одной строкой для любого программиста JavaScript. Это очень простое регулярное выражение:
Сначала удалите что-нибудь до последней косой черты, если она есть.
Затем удалите что-нибудь после последнего периода, если он есть.
Это просто, это надежно, оно реализует именно то, что просили. Я что-то упускаю?
Ввод : C:\path\Filename.ext
Выходные данные : Filename
В HTML-коде установите значение File onChange следующим образом .
Предполагая, что ваш идентификатор текстового поля 'wpName' .
Я просто сделал свою собственную версию этого. Моя функция может быть использована для извлечения из нее всего, что вы хотите, если вам все это не нужно, тогда вы можете легко удалить некоторый код.
Будет выводить следующее:
- Файл с именем 'testcase1' имеет расширение: 'jpeg' находится в каталоге: 'C: \ blabla \ blaeobuaeu'
- Файл с именем 'testcase2' имеет расширение: 'png' находится в каталоге: '/ tmp / blabla'
- Файл с именем 'testcase3' имеет расширение: 'htm' находится в каталоге: ''
- Каталог с именем 'Testcase4' имеет расширение: '' находится в каталоге: 'C:'
- Каталог с именем 'fileWithoutDots' имеет расширение: '' находится в каталоге: '/dir.with.dots'
- Каталог с именем '' имеет расширение: '' находится в каталоге: '/dir.with.dots/another.dir'
С && nOffset+1 === str.length добавленным к isDirectory :
- Файл с именем 'testcase1' имеет расширение: 'jpeg' находится в каталоге: 'C: \ blabla \ blaeobuaeu'
- Файл с именем 'testcase2' имеет расширение: 'png' находится в каталоге: '/ tmp / blabla'
- Файл с именем 'testcase3' имеет расширение: 'htm' находится в каталоге: ''
- Каталог с именем 'Testcase4' имеет расширение: '' находится в каталоге: 'C:'
- Каталог с именем 'fileWithoutDots' имеет расширение: '' находится в каталоге: '/dir.with.dots'
- Каталог с именем '' имеет расширение: '' находится в каталоге: '/dir.with.dots/another.dir'
Учитывая тестовые случаи, вы можете видеть, что эта функция работает достаточно надежно по сравнению с другими предлагаемыми здесь методами.
Примечание для новичков о том, что \\: \ является escape-символом, например, \ n означает перевод строки и \ t символ табуляции. Чтобы можно было написать \ n, вы должны ввести \\ n.
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Перегрузки
Возвращает имя и расширение файла из пути к файлу, представленного диапазоном символов только для чтения.
Возвращает имя файла и расширение указанной строки пути.
GetFileName(ReadOnlySpan<Char>)
Возвращает имя и расширение файла из пути к файлу, представленного диапазоном символов только для чтения.
Параметры
Диапазон только для чтения, содержащий путь, из которого нужно получить имя и расширение файла.
Возвращаемое значение
Символы, следующие за последним символом разделителя каталогов в пути path .
Комментарии
Возвращаемый диапазон только для чтения содержит символы пути, следующие за последним разделителем в path . Если последним символом в path является символ или разделитель каталога, метод возвращает значение ReadOnlySpan<T>.Empty . Если path не содержит символа разделителя, метод возвращает значение path .
См. также раздел
Применяется к
GetFileName(String)
Возвращает имя файла и расширение указанной строки пути.
Параметры
Строка пути, из которой нужно получить имя файла и расширение.
Возвращаемое значение
Символы, следующие за последним символом разделителя каталогов в пути path . Если последним символом параметра path является символ разделения тома или каталога, этот метод возвращает Empty. Если значением параметра path является null , метод возвращает null .
Исключения
Примеры
в следующем примере демонстрируется поведение GetFileName метода на настольной платформе на основе Windows.
Комментарии
Возвращаемое значение —, null Если путь к файлу — null .
Символы разделения, используемые для определения начала имени файла, — это DirectorySeparatorChar и AltDirectorySeparatorChar .
поскольку \ является допустимым именем файла в unix, GetFileName работа с платформами на базе unix не может правильно возвращать имя файла из пути на основе Windows, например C: \ mydir \ myfile. ext, но GetFileName выполняемые на платформах на основе Windows могут правильно возвращать имя файла из пути на основе unix, например /тмп/мифиле.екст, поэтому поведение GetFileName метода не является строго одинаковым на платформах на базе unix и Windows.
Для определённых целей может потребоваться составить список файлов, содержащихся в папке. Если таковых немного, то задачу можно выполнить вручную без особых затруднений, но если в папке десятки, сотни или даже тысячи файлов, то пытаться составить их список вручную это бесполезная трата времени. Можно ли этот процесс как-то автоматизировать?
Автоматическое создание списка файлов
К счастью, функционал Windows и других программных решений, позволяет создавать списки файлов в папках в автоматическом порядке. Данные списки можно потом будет без проблем скопировать в текстовый файл и редактировать по мере необходимости.
Рассмотрим все имеющиеся способы создания такого списка.
Вариант 1: «Командная строка»
Этот способ является стандартным и не требует от пользователя каких-либо особых умений, за исключением базового владения «Командной строкой». Итак, инструкция к данному варианту выглядит следующим образом:
- Перейдите в ту папку, список файлов из которой вы хотели бы получить.
- Теперь зажмите Shift на клавиатуре и нажмите правой кнопкой мыши по пустому месту в окне «Проводника».
- Должно появится контекстное меню, где требуется выбрать вариант «Запуск командной строки» или «Открыть окно команд здесь». В случае с последними версиями Windows 10 такого пункта может не быть. Вместо этого нужно нажать на «Запустить окно PowerShell здесь». PowerShell – это новый аналог «Командной строки», который Майкрософт активно внедряет в последние версии Windows 10. По сути отличий в функционале нет никаких.
- dir /b>spisok.txt Данная команда сохраняет только имена файлов в файл spisok.txt. Вы можете вместо него указать любое другое название, какое вам будет удобно, но учтите, что оно не должно содержать кириллических символов;
- dir /s>spisok.txt Сохраняет не только имена файлов, содержащихся в папке, но и имена папок и подпапок, которые могут быть расположена в основной папке.
Всю информацию из него можно скопировать в документ Word, так как последний удобнее редактировать. К тому же, если в папке содержались файлы или другие папки в названии которых присутствовали кириллические символы, то в «Блокноте» таковые могут отображаться некорректно, так как нужные кодировки не поддерживаются.
Вариант 2: Использование BAT-файла
Данный способ тоже не отличается какой-либо сложностью, плюс даёт почувствовать себя немного программистом. Суть заключается в создании специального файла с алгоритмом, который выведет список всех элементов в папке в отдельный текстовый файл. Итак, рассмотрим инструкцию к этому варианту более подробно:
-
Создайте в любом месте на компьютере текстовый файл. Для этого нажмите правой кнопкой мыши и в меню выберите пункт «Создать». Из открывшегося подменю выберите вариант «Текстовый файл».
echo %date% %time% >spisok.txt
Содержимое данного файла также можно перенести в текстовый документ MS Word. Однако в этом случае проблем с кодировкой и неверным отображением кириллических символов не наблюдается.
Вариант 3: DirLister
Данное бесплатное ПО не требуется установки на компьютер и с его помощью вы можете создать список всех элементов в той или иной папке. Инструкция по её использованию выглядит следующим образом:
- Перейдите на официальный сайт разработчика и скачайте архив с программой.
- Распакуйте архив, вытащив от туда исполняемый EXE-файл.
- Запустите его.
Вариант 4: Total Commander
Total Commander – это популярный файловый менеджер, где пользователь может быстро получить и скопировать всю основную информацию о файлах, а также о содержимом папок. В данном случае получить список файлов, находящихся в папке, можно следующим образом:
- В окне Total Commander откройте нужную папку.
- В верхнем меню нажмите на пункт «Выделение». Появится контекстное меню, где нужно нажать на вариант «Выделить всё».
- Затем в этом же меню выберите пункт «Копировать имена файлов в буфер обмена».
Вариант 5: Браузер
Во всех современных браузерах, будь то Opera, Google Chrome, Yandex и т.д., есть функция просмотра содержимого папок и некоторых файлов, расположенных на компьютере.
Инструкция к этому варианту выглядит следующим образом:
- Откройте «Проводник». Выберите при помощи щелчка левой кнопкой мыши ту папку, которую хотите просмотреть в браузере.
- Перетащите эту папку в любой удобный для вас браузер. В данном случае рассматривается вариант с Opera.
Это были все способы, позволяющие вывести список содержимых в папке файлов в отдельный текстовый документ.
Достаточно часто возникают ситуации, когда у нас есть полное имя файла, а требуется узнать его расширение. Или добавить нужное расширение, когда не известно, ввел его пользователь или нет. Иногда у нас есть относительный путь до файла, а требуется узнать абсолютный. Про основные методы работы с именем файла и будет эта статья.
Абсолютный путь к файлу
Для того чтобы узнать в Python абсолютный путь к файлу, потребуется воспользоваться библиотекой os. Её подключаем с помощью команды import os. В классе path есть метод abspath. Вот пример использования.
Так же можно воспользоваться и стандартной библиотекой pathlib. Она вошла в состав основных библиотек, начиная с версии Python 3.4. До этого надо было ее инсталлировать с помощью команды pip install pathlib. Она предназначена для работы с путями файловой системы в разных ОС и отлично подойдет для решения данной задачи.
Имя файла
Чтобы узнать имя файла из полной строки с путем, воспользуемся методом basename модуля os.
Здесь перед строкой вставил r, чтобы подавить возможное возникновение служебных символов. Например, в данном случае если не указать r, то \f считалось бы символом перевода страницы.
Без расширения
Теперь разберемся, как в Python узнать имя файла без расширения. Воспользуемся методом splittext. В этот раз для примера возьмем файл с двойным расширением, чтобы проверить, как будут в этой ситуации работать стандартны функции.
Видно, что последнее расширение архиватора gz было отброшено, в то время как расширение несжатого архива tar осталось в имени.
Если же нам нужно только имя, то можно отбросить все символы полученной строки, которые идут после первой точки. Символ точки тоже отбросим.
Дополним предыдущий пример следующим кодом:
Расширение файла
В Python получить расширение файла можно аналогичным образом с помощью той же функции splitext. Она возвращает кортеж. Первый элемент кортежа имя, а второй – расширение. В данном случае нам нужен второй элемент. Индекс второго элемента равен единице, так как отсчет их идет от нуля.
Аналогично можно воспользоваться библиотекой pathlib. Воспользуемся методом suffix.
Но в нашем случае два расширения. Их можно узнать с помощью функции suffixes. Она возвращает список, элементами которого и будут расширения. Ниже приведен пример получения списка расширений.
Вопрос от пользователя
Здравствуйте.
Помогите с одним вопросом. У меня есть несколько внешних дисков и на них записаны фильмы. Я хочу получить список всех названий (имен) этих файлов в тексте, чтобы его распечатать и положить рядом в коробочку с диском (скажем, навести порядок!).
Это серьезно бы облегчило поиск и подключение нужного диска.
Способы получить список имен файлов
Вариант 1 (с помощью Total Commander)
Запустив Total Commander, перейдите в нужный каталог (в тот, где у вас хранятся фильмы, например) и выделите все файлы (для этого достаточно нажать Ctrl+A).
Выделяем все файлы в нужном каталоге
Далее в меню "Выделение" выберите опцию "Сохранить выделение в файл. " (в некоторых версиях программы есть возможность скопировать имена файлов в буфер — если сделаете так, то потом откройте документ Word и вставьте список, нажав Ctrl+V ).
Сохранить выделение в файл (Total Commander)
Текстовый файл можно открывать - список готов!
Вариант 2 (через браузер)
После откройте проводник и перейдите в папку с нужными вам файлами — нужно будет скопировать путь до нее, нажать сочетание Ctrl+C (адрес, вида: "C:\Users\alex\Videos\Фильмы" )
После, вставить этот скопированный "путь" в адресную строку браузера и нажать Enter. В результате вы увидите, что обозреватель покажет вам список всех файлов и дату последнего изменения.
Открываем путь в Chrome
Вставляем список в Excel для дальнейшей работы.
Вариант 3 (список со вложенными файлами и папками)
Этот способ универсальный, и к тому же позволяет получить не только список файлов из текущего каталога, но и из всех вложенных.
Например, есть у вас в каталоге "Видео" отдельная папка "Кино 90-х" , в которой 2 десятка др. фильмов — вышеперечисленные способы бы не позволили узнать их название (из полученного списка), а этот позволит!
В ней нужно последовательно ввести две команды, после каждой нажать Enter:
- cd C:\Users\alex\Videos\Фильмы (вместо "C:\Users\alex\Videos\Фильмы" укажите свой каталог) ;
- dir /b /s | sort > List.txt (эта команда создаст файл "List.txt" в выбранной вами папке со всеми файлами и каталогами, что в нем есть! Кроме этого, она отсортирует список от А к Я).
CMD - открываем каталог, получаем список
Как убрать путь (C:\Video\) из списка
Кстати, если в списке файлов вам среди названия фильмов (файлов) не нужен их путь — то его легко убрать. Для этого в Notepad++ достаточно:
- нажать на Ctrl+F ;
- в окне "Замена" в строку "найти" указать путь (который повторяется в каждой строке);
- в строке "Заменить на" проверить, чтобы была пустота;
- и нажать кнопку "заменить все" . В результате: в вашем списке будут только имена (без пути)!
Убираем путь до каталога в блокноте
Вариант 4 (без доп. софта)
Этот способ работает не во всех версиях ОС Windows (в 10-ке все OK). Зато он быстрый и не требует вообще никакого доп. софта.
- зайти в нужный каталог;
- выделить файлы (Ctrl+A);
- зажать клавишу Shift (левую);
- нажать ПКМ (правую кнопку мыши), не отпуская Shift;
- из появившегося меню проводника выбрать опцию "Копировать как путь" . Теперь в буфере обмена есть все имена файлов из каталога!
Выделяем и копируем путь
Теперь можно открыть блокнот или тот же Word и вставить список (Ctrl+V).
Вставляем скопированный список
Если вам мешает в каждой строке путь ("C:\Users\") - то как его убрать см. чуть выше.
Читайте также: