Как использовать `pathlib` для получения расширения файла?

Используйте метод Path.suffix объекта Path из модуля pathlib. Например:
from pathlib import Path

file_path = Path("my_file.txt")
extension = file_path.suffix  # Вернет ".txt"
  
Если нужно расширение без точки, используйте file_path.suffix[1:].

Для получения расширения файла с использованием модуля pathlib в Python можно использовать несколько подходов. Вот основные из них:

  1. Использование свойства suffix:

    Свойство suffix объекта Path возвращает расширение файла, включая точку. Если файл не имеет расширения, возвращается пустая строка.

    
            from pathlib import Path
    
            file_path = Path("my_file.txt")
            extension = file_path.suffix  # Расширение: ".txt"
    
            file_path_no_extension = Path("my_file")
            extension_no_ext = file_path_no_extension.suffix  # Расширение: ""
    
            print(f"Расширение файла {file_path}: {extension}")
            print(f"Расширение файла {file_path_no_extension}: {extension_no_ext}")
          
  2. Использование свойства suffixes (для файлов с несколькими расширениями):

    Свойство suffixes возвращает список всех расширений файла, начиная с последнего. Например, для файла "archive.tar.gz", это будет ['.tar', '.gz'].

    
            from pathlib import Path
    
            archive_path = Path("archive.tar.gz")
            extensions = archive_path.suffixes  # Расширения: ['.tar', '.gz']
    
            print(f"Расширения файла {archive_path}: {extensions}")
          

    Чтобы получить только последнее расширение (как в примере с suffix), можно взять последний элемент списка:

    
            last_extension = archive_path.suffixes[-1] # Расширение: '.gz'
            print(f"Последнее расширение файла {archive_path}: {last_extension}")
           
  3. Разбор имени файла вручную (менее предпочтительно):

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

    
            from pathlib import Path
    
            file_path = Path("another_file.pdf")
            file_name = file_path.name
            if "." in file_name:
              extension = "." + file_name.split(".")[-1]
            else:
              extension = ""
    
            print(f"Расширение файла {file_path} (ручной разбор): {extension}")
          

    Этот способ менее предпочтителен, так как встроенные методы suffix и suffixes более удобны и надежны.

Рекомендации:

  • Для получения простого расширения файла (одного расширения) используйте свойство suffix.
  • Для файлов с несколькими расширениями (например, .tar.gz) используйте свойство suffixes.

Использование pathlib обеспечивает объектно-ориентированный подход к работе с путями файлов, что делает код более читаемым и поддерживаемым, по сравнению с использованием строковых манипуляций.

0