Как узнать имя файла
Перейти к содержимому

Как узнать имя файла

  • автор:

Путь, имя и расширение файла

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

Абсолютный путь к файлу

Для того чтобы узнать в Python абсолютный путь к файлу, потребуется воспользоваться библиотекой os. Её подключаем с помощью команды import os. В классе path есть метод abspath. Вот пример использования.

import os p = os.path.abspath('file.txt ') print(p) C:\python3\file.txt

Так же можно воспользоваться и стандартной библиотекой pathlib. Она вошла в состав основных библиотек, начиная с версии Python 3.4. До этого надо было ее инсталлировать с помощью команды pip install pathlib. Она предназначена для работы с путями файловой системы в разных ОС и отлично подойдет для решения данной задачи.

import pathlib p = pathlib.Path('file.txt ') print(p) C:\python3\file.txt

Имя файла

Чтобы узнать имя файла из полной строки с путем, воспользуемся методом basename модуля os.

import os name = os.path.basename(r'C:\python3\file.txt ') print(name) file.txt

Здесь перед строкой вставил r, чтобы подавить возможное возникновение служебных символов. Например, в данном случае если не указать r, то \f считалось бы символом перевода страницы.

Без расширения

Теперь разберемся, как в Python узнать имя файла без расширения. Воспользуемся методом splittext. В этот раз для примера возьмем файл с двойным расширением, чтобы проверить, как будут в этой ситуации работать стандартны функции.

from os import path full_name = path.basename(r'C:\python3\file.tar.gz ') name = path.splitext(full_name)[0] print(name) file.tar

Видно, что последнее расширение архиватора gz было отброшено, в то время как расширение несжатого архива tar осталось в имени.

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

Дополним предыдущий пример следующим кодом:

index = name.index('.') print(name[:index]) file

Расширение файла

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

from os import path full_name = path.basename(r'C:\python3\file.tar.gz ') name = path.splitext(full_name)[1] print(name) .gz

Аналогично можно воспользоваться библиотекой pathlib. Воспользуемся методом suffix.

from pathlib import Path print(Path(r'C:\python3\file.tar.gz ').suffix) .gz

Но в нашем случае два расширения. Их можно узнать с помощью функции suffixes. Она возвращает список, элементами которого и будут расширения. Ниже приведен пример получения списка расширений.

from pathlib import Path print(Path(r'C:\python3\file.tar.gz ').suffixes) ['.tar', '.gz ']

Для того, чтобы получить имя файла или расширение из полного пути или для получения абсолютного пути к файлу используйте библиотеки os и pathlib. Лучше воспользоваться готовым решением из стандартой библиотеками, чем писать свое решение.

Path. Get File Name Метод

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

Перегрузки

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

Возвращает имя файла и расширение указанной строки пути.

GetFileName(ReadOnlySpan)

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

public: static ReadOnlySpan GetFileName(ReadOnlySpan path);
public static ReadOnlySpan GetFileName (ReadOnlySpan path);
static member GetFileName : ReadOnlySpan -> ReadOnlySpan
Public Shared Function GetFileName (path As ReadOnlySpan(Of Char)) As ReadOnlySpan(Of Char)
Параметры

Диапазон только для чтения, содержащий путь, из которого нужно получить имя и расширение файла.

Возвращаемое значение

Символы, следующие за последним символом разделителя каталогов в пути path .

Комментарии

Возвращаемый диапазон только для чтения содержит символы пути, следующие за последним разделителем в path . Если последний символ в path является разделителем тома или каталога, метод возвращает ReadOnlySpan.Empty. Если path не содержит символа-разделителя, метод возвращает path .

См. также раздел

Применяется к

GetFileName(String)

Возвращает имя файла и расширение указанной строки пути.

public: static System::String ^ GetFileName(System::String ^ path);
public static string GetFileName (string path);
public static string? GetFileName (string? path);
static member GetFileName : string -> string
Public Shared Function GetFileName (path As String) As String
Параметры

Строка пути, из которой нужно получить имя файла и расширение.

Возвращаемое значение

Символы, следующие за последним символом разделителя каталогов в пути path . Если последним символом параметра path является символ разделения тома или каталога, этот метод возвращает Empty. Если значением параметра path является null , метод возвращает null .

Исключения

платформа .NET Framework и .NET Core версий старше 2.1: path содержит один или несколько недопустимых символов, определенных в GetInvalidPathChars().

Примеры

В следующем примере показано поведение метода на GetFileName классической платформе Windows.

String^ fileName = "C:\\mydir\\myfile.ext"; String^ path = "C:\\mydir\\"; String^ result; result = Path::GetFileName( fileName ); Console::WriteLine( "GetFileName('') returns ''", fileName, result ); result = Path::GetFileName( path ); Console::WriteLine( "GetFileName('') returns ''", path, result ); // This code produces output similar to the following: // // GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext' // GetFileName('C:\mydir\') returns '' 
string fileName = @"C:\mydir\myfile.ext"; string path = @"C:\mydir\"; string result; result = Path.GetFileName(fileName); Console.WriteLine("GetFileName('') returns ''", fileName, result); result = Path.GetFileName(path); Console.WriteLine("GetFileName('') returns ''", path, result); // This code produces output similar to the following: // // GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext' // GetFileName('C:\mydir\') returns '' 
Dim fileName As String = "C:\mydir\myfile.ext" Dim pathname As String = "C:\mydir\" Dim result As String result = Path.GetFileName(fileName) Console.WriteLine("GetFileName('') returns ''", fileName, result) result = Path.GetFileName(pathname) Console.WriteLine("GetFileName('') returns ''", pathname, result) ' This code produces output similar to the following: ' ' GetFileName('C:\mydir\myfile.ext') returns 'myfile.ext' ' GetFileName('C:\mydir\') returns '' 

Комментарии

Возвращаемое значение равно , null если путь к файлу — null .

Символы разделителя, используемые для определения начала имени файла: DirectorySeparatorChar и AltDirectorySeparatorChar.

Так как \ является законным именем файла в Unix, GetFileName выполнение на платформах под управлением Unix не может правильно возвращать имя файла из пути на основе Windows, например C:\mydir\myfile.ext, но GetFileName выполнение на платформах под управлением Windows может правильно возвращать имя файла из пути на основе Unix, например /tmp/myfile.ext, поэтому поведение GetFileName метода не является строго одинаковым на платформах под управлением Unix и Windows.

Список распространенных задач ввода-вывода см. в разделе Общие задачи ввода-вывода.

См. также раздел

  • Форматы путей к файлам в системах Windows
  • Файловый и потоковый ввод-вывод
  • Практическое руководство. Чтение текста из файла
  • Практическое руководство. Запись текста в файл

Именование файлов, путей и пространств имен

Все файловые системы, поддерживаемые Windows, используют концепцию файлов и каталогов для доступа к данным, хранящимся на диске или устройстве. Разработчики Windows, работающие с API Windows для операций ввода-вывода файлов и устройств, должны понимать различные правила, соглашения и ограничения имен файлов и каталогов.

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

Некоторые файловые системы, такие как NTFS, поддерживают связанные файлы и каталоги, которые также соответствуют соглашениям об именовании файлов и правилам, как обычный файл или каталог. Дополнительные сведения см. в разделе «Жесткие ссылки» и «Соединения » и «Точки повторного анализа» и «Операции с файлами».

Дополнительные сведения см. в следующих подразделах:

  • Имена файлов и каталогов
    • Соглашения об именах
    • Короткие и длинные имена
    • Полные и относительные пути
    • Ограничение максимальной длины пути
    • Пространства имен файлов Win32
    • Пространства имен устройств Win32
    • Пространства имен NT

    Дополнительные сведения о настройке Windows 10 для поддержки длинных путей к файлам см. в статье о ограничении максимальной длины пути.

    Имена файлов и каталогов

    Все файловые системы соответствуют одинаковым общим соглашениям об именовании для отдельного файла: базовое имя файла и необязательное расширение, разделенное периодом. Однако каждая файловая система, например NTFS, CDFS, exFAT, UDFS, FAT и FAT32, может иметь конкретные и различные правила формирования отдельных компонентов в пути к каталогу или файлу. Обратите внимание, что каталог — это просто файл со специальным атрибутом, обозначающим его как каталог , но в противном случае следует соблюдать все те же правила именования, что и обычный файл. Так как каталог терминов просто относится к специальному типу файла насколько это касается файловой системы, некоторые справочные материалы будут использовать общий файл терминов, чтобы охватывать как концепции каталогов, так и файлов данных. Из-за этого, если иное не указано, любые правила именования или использования или примеры для файла также должны применяться к каталогу. Путь к термину относится к одному или нескольким каталогам, обратным косикам и, возможно, имени тома. Дополнительные сведения см. в разделе «Пути «.

    Ограничения количества символов также могут отличаться и могут отличаться в зависимости от используемого формата префикса имени файловой системы и пути. Это еще более сложно благодаря поддержке механизмов обратной совместимости. Например, старая файловая система MS-DOS FAT поддерживает не более 8 символов для имени базового файла и 3 символа расширения в общей сложности 12 символов, включая разделитель точек. Это обычно называется именем файла 8.3. Файловые системы Windows FAT и NTFS не ограничиваются именами файлов версии 8.3, так как они поддерживают длинное имя файла, но они по-прежнему поддерживают версию 8.3 длинных имен файлов.

    Соглашения об именах

    Следующие основные правила позволяют приложениям создавать и обрабатывать допустимые имена файлов и каталогов независимо от файловой системы:

    • Используйте период для разделения базового имени файла от расширения в имени каталога или файла.
    • Используйте обратную косую черту (\) для разделения компонентовпути. Обратная косая черта разделяет имя файла от пути к нему и одно имя каталога из другого имени каталога в пути. Не удается использовать обратную косую черту в имени фактического файла или каталога, так как он является зарезервированным символом, который разделяет имена на компоненты.
    • Используйте обратную косую черту в качестве части имен томов, например «C:\» в «C:\path\file» или «\server\share» в «\\server\share\path\file» для имен универсального соглашения об именовании (UNC). Дополнительные сведения о именах UNC см. в разделе » Ограничение длины максимального пути».
    • Не предполагайте конфиденциальность регистра. Например, рассмотрим имена ОСКАРа, Оскара и оскара, чтобы быть одинаковыми, даже если некоторые файловые системы (например, файловая система, совместимая с POSIX), могут рассматривать их как разные. Обратите внимание, что NTFS поддерживает семантику POSIX для конфиденциальности регистра, но это не поведение по умолчанию. Дополнительные сведения см. в статье CreateFile .
    • Конструкторы томов (буквы диска) аналогично не учитывает регистр. Например, «D:\» и «d:\» относятся к тому же тому.
    • Используйте любой символ в текущей кодовой странице для имени, включая символы и символы Юникода в расширенном наборе символов (128–255), за исключением следующих:
      • Следующие зарезервированные символы:
        • < (меньше чем);
        • > (больше чем);
        • : (двоеточие)
        • » (двойная кавычка)
        • / (косая черта вперед)
        • \ (обратная косая черта)
        • | (вертикальная полоса или канал)
        • ? (вопросительный знак)
        • * (звездочка)

        Короткие и длинные имена

        Длинное имя файла считается любым именем файла, превышающим короткое соглашение об именовании стилей MS-DOS (также называемое 8.3). При создании длинного имени файла Windows также может создать короткую форму 8.3 имени, называемую псевдонимом 8.3 или коротким именем, а также хранить его на диске. Этот псевдоним версии 8.3 можно отключить по соображениям производительности по всей системе или для указанного тома в зависимости от конкретной файловой системы.

        Windows Server 2008, Windows Vista, Windows Server 2003 и Windows XP: псевдоним 8.3 нельзя отключить для указанных томов до Windows 7 и Windows Server 2008 R2.

        Во многих файловых системах имя файла будет содержать тильду (~) в каждом компоненте имени, которое слишком долго соответствует правилам именования 8.3.

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

        Чтобы запросить имена файлов 8.3, длинные имена файлов или полный путь к файлу из системы, рассмотрите следующие параметры:

        • Чтобы получить форму 8.3 длинного имени файла, используйте функцию GetShortPathName .
        • Чтобы получить длинную версию имени файла короткого имени, используйте функцию GetLongPathName .
        • Чтобы получить полный путь к файлу, используйте функцию GetFullPathName .

        В более новых файловых системах, таких как NTFS, exFAT, UDFS и FAT32, Windows сохраняет длинные имена файлов на диске в Юникоде, что означает, что исходное длинное имя файла всегда сохраняется. Это верно, даже если длинное имя файла содержит расширенные символы, независимо от кодовой страницы, активной во время операции чтения или записи диска.

        Файлы с длинными именами файлов можно скопировать между секциями файловой системы NTFS и секциями файловой системы Windows FAT без потери сведений о имени файла. Это может быть не так для старых ФАЙЛОВЫХ систем MS-DOS и некоторых типов файловых систем CDFS (CD-ROM), в зависимости от фактического имени файла. В этом случае короткое имя файла будет заменено, если это возможно.

        Пути

        Путь к указанному файлу состоит из одного или нескольких компонентов, разделенных специальным символом (обратная косая черта), при этом каждый компонент обычно является именем каталога или именем файла, но с некоторыми заметными исключениями, рассмотренными ниже. Часто важно интерпретация системы пути, как показано в начале или префиксе пути. Этот префикс определяет пространство имен, которое использует путь, а также специальные символы, используемые в какой позиции в пути, включая последний символ.

        Если компонент пути является именем файла, он должен быть последним компонентом.

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

        Полные и относительные пути

        Для функций API Windows, которые управляют файлами, имена файлов часто могут быть относительно текущего каталога, а некоторые API требуют полного пути. Имя файла относительно текущего каталога, если оно не начинается со следующего:

        • Имя UNC любого формата, которое всегда начинается с двух символов обратной косой черты («\\»). Для получения дополнительных сведений см. следующий раздел.
        • Конструктор дисков с обратной косой чертой, например «C:\» или «d:\».
        • Одна обратная косая черта, например «\directory» или «\file.txt». Это также называется абсолютным путем .

        Если имя файла начинается только с конструктора дисков, но не обратной косой черты после двоеточия, он интерпретируется как относительный путь к текущему каталогу на диске с указанной буквой. Обратите внимание, что текущий каталог может быть корневым каталогом в зависимости от того, что он был установлен во время последней операции изменения каталога на этом диске. Ниже приведены примеры этого формата:

        • «C:tmp.txt» ссылается на файл с именем tmp.txt в текущем каталоге на диске C.
        • «C:tempdir\tmp.txt» ссылается на файл в подкаталоге текущего каталога на диске C.

        Путь также считается относительным, если он содержит «двойные точки»; то есть два периода вместе в одном компоненте пути. Этот специальный описатель используется для обозначения каталога над текущим каталогом, в противном случае называется родительским каталогом. Ниже приведены примеры этого формата:

        • «.. \tmp.txt» указывает файл с именем tmp.txt, расположенный в родительском каталоге текущего каталога.
        • «.. \.. \tmp.txt» указывает файл, который является двумя каталогами над текущим каталогом.
        • «.. \tempdir\tmp.txt» указывает файл с именем tmp.txt, расположенный в каталоге с именем tempdir, который является одноранговым каталогом текущего каталога.

        Относительные пути могут сочетать оба примера типов, например C. \tmp.txt». Это полезно, так как система отслеживает текущий диск вместе с текущим каталогом этого диска, он также отслеживает текущие каталоги в каждой из разных букв дисков (если система имеет более одного), независимо от того, какой диктор дисков задан как текущий диск.

        Ограничение максимальной длины пути

        В выпусках Windows до Windows 10 версии 1607 максимальная длина пути MAX_PATH, которая определяется как 260 символов. В более поздних версиях Windows изменение раздела реестра или использование средства групповой политики требуется для удаления ограничения. Полные сведения см. в разделе «Максимальное ограничение длины пути».

        Пространства имен

        В API Windows используются две основные категории соглашений о пространстве имен, которые обычно называются пространствами имен NT и пространствами имен Win32. Пространство имен NT было разработано для самого низкого уровня пространства имен, в котором могут существовать другие подсистемы и пространства имен, включая подсистему Win32 и, по расширению, пространства имен Win32. POSIX — это еще один пример подсистемы в Windows, созданной на основе пространства имен NT. Ранние версии Windows также определили несколько предопределенных или зарезервированных имен для определенных специальных устройств, таких как порты связи (последовательные и параллельные) и консоль отображения по умолчанию в рамках того, что теперь называется пространством имен устройств NT, и по-прежнему поддерживаются в текущих версиях Windows для обратной совместимости.

        Пространства имен файлов Win32

        Префикс пространства имен Win32 и соглашения приведены в этом разделе и в следующем разделе с описанием того, как они используются. Обратите внимание, что эти примеры предназначены для использования с функциями API Windows и не все обязательно работают с приложениями оболочки Windows, такими как Windows Обозреватель. По этой причине существует более широкий спектр возможных путей, чем обычно доступны из приложений оболочки Windows, и приложений Windows, которые используют преимущества этого, можно разработать с помощью этих соглашений о пространстве имен.

        Для ввода-вывода файла префикс «\\?\» в строку пути сообщает API Windows отключить все синтаксический анализ строк и отправить строку, которая следует за ней прямо в файловую систему. Например, если файловая система поддерживает большие пути и имена файлов, можно превысить MAX_PATH ограничения, которые в противном случае применяются API Windows. Дополнительные сведения об ограничении обычного максимального пути см. в предыдущем разделе о ограничении максимальной длины пути.

        Так как он отключает автоматическое расширение строки пути, префикс «\\?\» также позволяет использовать «.». и «.» в именах путей, которые могут быть полезны, если вы пытаетесь выполнить операции с файлом с этими зарезервированными относительными описателями пути в составе полного пути.

        Многие, но не все API ввода-вывода файлов поддерживают «\\?\»; Чтобы убедиться в правильности каждого API, необходимо ознакомиться со справочным разделом.

        Обратите внимание, что API Юникода должны использоваться для проверки префикса «\\?\» позволяет превышать MAX_PATH

        Пространства имен устройств Win32

        Префикс «\\.\» получит доступ к пространству имен устройства Win32 вместо пространства имен Win32. Таким образом, доступ к физическим дискам и томам осуществляется напрямую без прохождения файловой системы, если API поддерживает этот тип доступа. Таким образом можно получить доступ ко многим устройствам, отличным от дисков (например, с помощью функций CreateFile и DefineDosDevice).

        Например, если вы хотите открыть последовательный порт связи системы 1, можно использовать COM1 в вызове функции CreateFile . Это работает, так как COM1–COM9 является частью зарезервированных имен в пространстве имен NT, хотя с помощью префикса «\\».\» также будет работать с этими именами устройств. По сравнению с тем, если установлен 100 портов последовательной доски расширения и хотите открыть COM56, его нельзя открыть с помощью COM56, так как для COM56 не существует предопределенного пространства имен NT. Вам потребуется открыть его с помощью «\\.\COM56», так как «\\.\».\» переходит непосредственно в пространство имен устройства, не пытаясь найти предопределенный псевдоним.

        API, которые проходят через функцию CreateFile, обычно работают с префиксом «\\.\». Так как CreateFile — это функция, используемая для открытия файлов и устройств в зависимости от используемых параметров.

        Если вы работаете с функциями API Windows, следует использовать префикс «\\.\» для доступа только к устройствам и не к файлам.

        Большинство API не поддерживают «\\.\»; Распознаются только те, которые предназначены для работы с пространством имен устройства. Всегда проверка справочный раздел для каждого API, чтобы убедиться.

        Пространства имен NT

        Существуют также API, которые позволяют использовать соглашение о пространстве имен NT, но диспетчер объектов Windows делает это ненужным в большинстве случаев. Чтобы проиллюстрировать, полезно просмотреть пространства имен Windows в браузере системных объектов с помощью средства Windows Sysinternals WinObj . При запуске этого средства отображается пространство имен NT, начиная с корневого каталога или \. Вложенная папка с именем «Global??» — это место, в котором находится пространство имен Win32. Именованные объекты устройства находятся в пространстве имен NT в подкаталоге Device. Здесь также можно найти Serial0 и Serial1, объекты устройства, представляющие первые два COM-порта, если они присутствуют в вашей системе. Объект устройства, представляющий том, будет примерно таким, как HarddiskVolume1, хотя числовой суффикс может отличаться. Имя DR0 в подкаталоге «Harddisk0» является примером объекта устройства, представляющего диск, и т. д.

        Чтобы сделать эти объекты устройств доступными для приложений Windows, драйверы устройств создают символьную ссылку (symlink) в пространстве имен Win32 «Global??», к соответствующим объектам устройства. Например, COM0 и COM1 в подкаталоге «Global??» просто соединяются с Serial0 и Serial1, «C:» — это асимметричная ссылка на HarddiskVolume1, «Physicaldrive0» — это асимметричная связь с DR0 и т. д. Без асимметричной связи указанное устройство «Xxx» не будет доступно для любого приложения Windows с помощью соглашений о пространстве имен Win32, как описано ранее. Однако дескриптор может быть открыт для этого устройства с помощью любых API, поддерживающих абсолютный путь к пространству имен NT формата \Device\Xxx.

        Благодаря добавлению поддержки нескольких пользователей через службы терминалов и виртуальные машины, для виртуализации корневого устройства на уровне системы в пространстве имен Win32 также необходимо выполнить виртуализацию. Это было сделано путем добавления симлинки с именем GLOBALROOT в пространство имен Win32, которое можно увидеть в подкаталоге «Global??» средства браузера WinObj, которое ранее обсуждалось, и может получить доступ через путь «\\?\?\GLOBALROOT». Этот префикс гарантирует, что следующий путь выглядит в истинном корневом пути диспетчера системных объектов, а не в зависимом от сеанса пути.

        Чтение имени файла средствами Python

        Есть видео файл, нужно имя файла сохранить в переменную (для дальнейших преобразований), но сохранить нужно до расширения(.mp4). Как это сделать?

        Отслеживать
        задан 17 сен 2018 в 15:51
        Sacred Sacred Sacred Sacred
        381 1 1 золотой знак 7 7 серебряных знаков 21 21 бронзовый знак
        Используйте docs.python.org/3/library/pathlib.html
        17 сен 2018 в 15:54

        Файл лежит на диске (известно ли где конкретно?) и нужно прочитать его имя? Или имя файла уже есть и нужно просто отбросить расширение?

        17 сен 2018 в 16:02

        3 ответа 3

        Сортировка: Сброс на вариант по умолчанию

        from pathlib import Path file_name = 'C:/Users/111/video.mp4' path = Path(file_name) print(path.name) # video.mp4 print(path.stem) # video 

        Отслеживать
        ответ дан 17 сен 2018 в 16:17
        77k 6 6 золотых знаков 56 56 серебряных знаков 123 123 бронзовых знака

        Когда вы имеете имя+расширение в переменной filename:

        In[152]: filename = "some_video.mp4" 

        вы можете использовать модуль os.path :

        In[151]: import os.path In[153]: name, __ = os.path.splitext(filename) In[154]: name Out[154]: 'some_video' 

        В переменной __ будет расширение, но оно вам не нужно (потому такое чудесное имя):

        In[155]: __ Out[155]: '.mp4' 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *