Перейти к содержимому

Python как получить имя файла

  • автор:

Чтение имени файла средствами 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
76.9k 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' 

Как получить имя запущенного скрипта Python?

Как получить имя запущенного Python script? Я попробовал os.__file__ , но возвращает имя файла, в котором находится os .

tehryan 20 сен. 2009, в 09:21
Поделиться
S.Lott 20 сен. 2009, в 11:46
stackoverflow.com/q/4152963/2336725, кажется, лучше дубликат.
Teepeemm 12 май 2014, в 22:27
Поделиться:

6 ответов

thisFile = __file__ 

Chazadanga 20 сен. 2009, в 11:30
Поделиться
Я получаю NameError: name ‘__file__’ is not defined .
bos 30 янв. 2017, в 18:22
Какую реализацию Python вы используете? CPython или что-то еще?
Charles Ritchie 30 янв. 2017, в 23:57
Python 2.7.3. Я только что запустил «python» и print __file__ .
bos 01 фев. 2017, в 04:49
@bos Я не думаю, что вы можете получить его из интерактивного режима, его нужно запускать как файл.
Fred Wu 27 июль 2017, в 20:12
Показать ещё 2 комментария

>> import os >> import sys >> print sys.argv[0] 

или если вы просто хотите script, а не полный путь

>> >> print os.path.basename(sys.argv[0]) 

Michael Foukarakis 20 сен. 2009, в 07:16
Поделиться

Да, это работает (= 1). @tehryan tehryan, пожалуйста, примите это как ответ, чтобы помочь тем, у кого такой же вопрос

Mawg 14 июль 2016, в 08:37

Это зависит от того, что вы подразумеваете под «запущенным python script».

__file__ предоставит вам имя исполняемого файла. Если это модуль, вы получите, где он был импортирован из, например. blahblah.pyc

sys.argv[0] предоставит вам имя script, которое выполняется, даже если вызвано из модуля, импортированного script.

Пожалуйста, просмотрите ответы на более ранний вопрос по этой теме (см. комментарий S.Lott на ваш вопрос).

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

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

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

Для того чтобы узнать в 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. Лучше воспользоваться готовым решением из стандартой библиотеками, чем писать свое решение.

Python как получить имя файла

Запись: and-semakin/mytetra_data/master/base/1588747838xm8yfxb152/text.html на raw.githubusercontent.com

Если нужно получить путь к текущему выполняемому скрипту, то можно прочитать значение из специальной переменной __file__ (она не определена в REPL, только в скриптах, которые запускаются из файлов).

Вот так можно получить абсолютный путь к выполняемому скрипту:

from pathlib import Path

Если нужно получить имя главного модуля программы, то можно __file__ заменить на __main__.__file__ .

  • Закодировать файл в base64 на Python
  • Рекурсивное создание директорий в Python
  • Сортировка в Python
  • Правильно добавить год/месяц к дате в Python
  • Отформатировать дату в Python
  • Получить рабочую директорию и директорию со скриптом в Python
  • Копия объекта в Python
  • Время выполнения программы на Python
  • Конвертировать datetime.timedelta в строку
  • Парсинг даты в Python
  • Конвертировать строку (str) в булевый тип (bool) в Python
  • Получить местный часовой пояс в Python
  • Проверить, что строка соответствует регулярному выражению в Python
  • Просмотреть доступные версии модулей в PIP
  • Получить целочисленный Unix timestamp в Python
  • getter и setter в Python
  • Настроить формат вывода логов в Python
  • Получить переменную окружения в Python
  • Обновить пакет в PIP
  • Получить имя (хостнейм) машины из Python
  • Вывести стэк вызовов при возникновении исключения в Python
  • Функция eval в Python
  • Дозаписывать (append) в файл в Python
  • Препроцессинг кода в Python
  • Проверить, что программа установлена из Python
  • Настроить путь для импорта библиотек в Python
  • Получить размер терминала в символах в Python
  • Enum с дополнительными полями в Python
  • Ошибка invalid command ‘bdist_wheel’ при установке пакета через PIP
  • Получить список аргументов функции из Python
  • Сделать словарь только для чтения в Python
  • Заматчить любой символ, включая перевод строки, в регулярных выражениях на Python
  • Получить список файлов в директории через pathlib в Python
  • Вывести действительное число с округлением до нескольких символов после запятой в Python
  • Вывод в терминал текста с цветами в Python
  • Перезагрузить импортированный модуль в Python
  • Безопасно создать список/словарь/любой объект из строкового представления в Python
  • Аналог декоратора @property для методов класса в Python
  • Перехватить ошибку TimeoutError в asyncio
  • Отключить вывод логов в Python
  • Уровни логгирования в Python
  • Удалить *.pyc и __pycache__ файлы
  • Выгрузить объект в JSON в Unicode в Python
  • Конвертировать datetime в другую часовую зону в Python
  • Дополнить строку нулями в Python
  • Вычислить MD5 от строки в Python
  • Удалить знаки пунктуации из строки в Python
  • Проверить, что первая буква в строке — заглавная, в Python
  • Разбить (split) строку по нескольким разделителям в Python
  • Отсортировать версии в Python
  • Распаковать любой архив в Python
  • Получить имя текущего скрипта на Python
  • Установка pip на Python 2.6
  • Отличить печатаемый символ Unicode от непечатаемого на Python
  • Вывести версию интерпретатора Python в машиночитаемом виде
  • Найти место, куда Python устанавливает пакеты (dist-packages, site-packages)

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

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