Как переименовать файл в Python
Обновлено: 21.11.2024
Функция os.rename() может использоваться для переименования файла в Python.
В приведенном выше примере
file_oldname — старое имя файла.
file_newname_newfile — новое имя файла.
- Файл с именем file_oldname переименовывается в file_newname_newfile
- Содержимое, которое присутствовало в файле_oldname, будет найдено в файле_newname_newfile .
Импортируйте модуль ОС.
Учитывать текущий каталог.
Если исходный/целевой файл не существует в текущем каталоге, где выполняется код, укажите абсолютный или относительный путь к файлам.
Исходный файл должен существовать. В противном случае отображается следующая ошибка.
Целевой файл не должен существовать. В противном случае отображается следующая ошибка -
Переименовать файл в Python с помощью Shutil.move()
Функция Shutil.move() также может использоваться для переименования файла в Python.
В приведенном выше примере
file_oldname : старое имя файла.
file_newname_newfile : новое имя файла.
- Файл с именем file_oldname переименовывается в file_newname_newfile
- Содержимое, которое присутствовало в file_oldname, теперь будет найдено в file_newname_newfile .
- Возвращаемое значение — newFileName , новое имя файла.
Импортируйте модуль Shutil как
Учитывать текущий каталог.
Если исходный/целевой файл не существует в текущем каталоге, где выполняется код, укажите абсолютный или относительный путь к файлам.
Исходный файл должен существовать. В противном случае отображается следующая ошибка -
Если целевой файл уже существует, ошибка не отображается. Кроме того, если в целевом файле присутствовало какое-либо содержимое, оно перезаписывается содержимым исходного файла.
Статьи DelftStack написаны такими же фанатами программного обеспечения, как и вы. Если вы также хотите внести свой вклад в DelftStack, написав платные статьи, вы можете посетить страницу «Написать для нас».
Статья по теме — файл Python
сообщить об этом объявлении
Мы можем переименовывать файлы в терминале Linux, используя разные подходы, один из подходов — использование Python, который обсуждается в этой статье. Мы не можем писать код Python прямо в терминале, мы создаем отдельный файл в текстовом редакторе. «Переименование» — это одна из функций операционной системы, поэтому для этой цели мы будем использовать модуль ОС Python.
Чтобы переименовать файл с помощью модуля ОС Python, выполните следующую процедуру:
Переименовать файл в Python с помощью модуля ОС в Ubuntu
Требования:
- Файл должен существовать ранее
- В вашей системе Linux должна быть установлена любая версия Python.
Модуль ОС Python позволяет выполнять различные операции, связанные с операционной системой. Переименование файла также является одной из операций операционной системы, которую можно выполнить с помощью функции модуля ОС Python os.rename().
Теперь следуйте приведенной ниже процедуре, чтобы изменить имя файла с помощью модуля ОС Python:
Создание файла Python: сначала вам нужно создать файл Python с помощью nano, например, я создаю файл Python_file.py с помощью указанной ниже команды:
Вы можете установить имя файла по вашему выбору.
Использование функции «os.rename» для переименования файла
Чтобы переименовать файл в текущем каталоге: нижеупомянутый синтаксис функции «os.rename()» будет использоваться для переименования файла в текущем каталоге:
- исходный файл: старое имя файла
- целевой файл: новое имя файла
Теперь запишите приведенный ниже код в файл Python_file, чтобы переименовать «old_linuxhint.txt» в «new_linuxhint.txt» в текущем каталоге:
Импорт ОС используется для импорта модуля ОС в программу.
ОС . переименовать ("old_linuxhint.txt", "new_linuxhint.txt")
Нажмите «ctrl+s», чтобы сохранить файл, и «ctrl+x», чтобы выйти из него.
Теперь, чтобы выполнить файл, запустите указанную ниже команду, я использую Python3 для выполнения Python_file.py, поскольку Python3 предварительно установлен в системе Ubuntu:
И команда ls используется для вывода списка файлов каталога, чтобы проверить, существует ли файл, который нужно переименовать, или нет:
Теперь, чтобы убедиться, что файл переименован или нет, снова перечислите файлы текущего рабочего каталога:
Чтобы переименовать файл в Каталоге отдельно от Текущего Каталога: Нижеуказанный синтаксис функции «os.rename()» будет использоваться для переименования файла:
- исходный файл: путь к файлу + старое имя файла
- целевой файл: путь к файлу + измененное/новое имя файла
Теперь запишите приведенный ниже код в Python_file.py, чтобы переименовать «old_linuxhint.txt» в «new_linuxhint.txt» в каталоге рабочего стола:
ОС . переименовать ( "/home/alishba/Desktop/old_linuxhint.txt", "/home/alishba/Desktop/new_lin
Нажмите «ctrl+s», чтобы сохранить файл, и «ctrl+x», чтобы выйти из него.
Используйте команду ls, чтобы просмотреть список файлов каталога Desktop, чтобы проверить, существует ли файл, который нужно переименовать, или нет:
Теперь, чтобы убедиться, что файл переименован или нет, снова перечислите файлы каталога Desktop:
Чтобы переименовать несколько файлов: мы также можем изменить имя нескольких файлов одновременно. Например, у меня есть три файла в каталоге рабочего стола: файл1, файл2, файл3, и я хочу добавить префикс «linuxhint_» ко всем трем именам файлов, а затем запустить указанный ниже код в «Python_file.py». р>
для текстового файла в ОС. listdir( "/home/alishba/Desktop") :
ОС . переименовать ( текстовый файл , f "/home/alishba/Desktop/linuxhint_" )
Вы можете изменить команду в соответствии с вашими требованиями; вы можете выбрать имена файлов и каталог, в котором они существуют по вашему выбору:
Мы будем использовать функцию «listdir()» в «цикле for», чтобы получать файлы один за другим, а затем переименовывать их с помощью функции os.rename. Строковая функция Python в приведенном выше коде используется для изменения имени каждого файла на рабочем столе на «/home/alishba/linuxhint_». Здесь мы используем «текстовый файл» в качестве переменной цикла для старого имени файла. который получит каждый файл каталога. Нажмите «Ctrl+s», чтобы сохранить файл, и «Ctrl+x», чтобы выйти из файла.
Сначала выведите список файлов рабочего стола, чтобы проверить наличие файлов, а затем запустите файл, чтобы переименовать файлы:
Теперь еще раз перечислите файлы рабочего стола, чтобы убедиться, что файлы переименованы правильно:
На приведенном выше рисунке отчетливо видно, что все файлы каталога Desktop переименованы.
Вывод:
Функция модуля ОС Python под названием os.rename() используется для переименования файлов с помощью Python. Мы можем переименовывать файлы, используя различные методы, но в этой статье мы обсудили, как переименовать файлы в текущем каталоге, кроме текущего каталога, и переименовать несколько файлов с помощью модуля ОС Python. Если вы программист Python и хотите переименовать файл/файлы с помощью Python, эта статья обязательно вам поможет.
Об авторе
Алишба Ифтихар
В настоящее время я учусь на первом курсе бакалавриата. Я интернированный автор в Linuxhint, и мне нравилось учиться искусству написания технического контента у старших авторов. После выпуска я с нетерпением жду возможности стать полноценным писателем по Linux.
Сколько времени вы тратите на переименование файлов? Вам интересно, если бы вы могли сделать это быстрее и проще? Что, если бы вы могли переименовывать огромное количество файлов в мгновение ока? Python поставляется с несколькими встроенными модулями и функциями, которые делают именно это. В этой статье вы узнаете, как использовать многие из этих модулей и функций для переименования и перемещения файлов в Python.
Изображение Криса Рида – источник: unsplash
Python – мощный язык программирования. Его легко освоить благодаря простому синтаксису, а также он универсален. С ним можно делать практически все, чем и объясняется его широкая популярность.
Даже если вы не являетесь профессиональным разработчиком, вы можете повысить свою повседневную продуктивность, написав всего несколько строк кода Python. Я придерживаюсь концепции «умной лени». Если вам нужно сделать что-то более трех раз, напишите сценарий и избавьте себя от хлопот!
Я считаю, что вначале стоит потратить время на автоматизацию задач, которые мне придется выполнять часто, чтобы сэкономить время в конце. Это также помогает мне улучшить свои навыки решения проблем. Одной из таких задач является переименование и перемещение пакетов файлов.
Без лишних слов, давайте сразу к делу! Чтобы убедиться, что мы на одной волне, я использую Windows 10 и Python 3.8.5. Также неплохо, но не обязательно иметь некоторое представление о работе со строками в Python.
Основные операции с файлами и каталогами
Чтобы разогреться, давайте проделаем некоторые необходимые манипуляции с помощью модуля os. Это облегчит понимание того, как переименовывать файлы в Python позже.
Модуль os позволяет сценариям напрямую взаимодействовать с операционной системой. Он является частью стандартного пакета встроенных утилит Python и не требует установки.
А вот и результат:
Чтобы запустить скрипт, откройте терминал Python и выполните:
Когда вы изучаете новую концепцию, библиотеку или фреймворк, всегда полезно прочитать официальную документацию.
Переименовать файлы в Python с помощью os.rename()
Теперь, когда мы рассмотрели некоторые основы, давайте применим метод переименования из модуля os для переименования файлов в Python. Чтобы переименовать один файл, нам нужно ввести текущее имя файла с его текущим местоположением и его новое имя с его местом назначения.
Давайте запустим пример. Для этого урока я собрал несколько стоковых фотографий, которые мы собираемся переименовать в Python. Вот моя исходная папка с фотографиями.
Во-первых, мы собираемся переименовать это красивое изображение красного неба. Как видите, имя файла не очень читабельно. Давайте переименуем его в red_sky.jpg .
Для начала мы можем получить имя файла, тип и местоположение со свойствами. Позже мы увидим, что можем использовать Python для получения имен файлов в нашем каталоге. Но пока давайте не будем усложнять.
Вот наш скрипт:
Необработанная строка Python — это обычная строка с префиксом r. Он обрабатывает символы, такие как обратная косая черта, как обычные символы, а не как escape-символы. Это гарантирует правильность пути, чтобы мы могли перемещать и переименовывать файлы в Python в Windows.
Кроме того, последний символ не может быть обратной косой чертой, поскольку это вызовет синтаксическую ошибку.
Давайте запустим наш скрипт и проверим вывод:
Наш файл был успешно переименован! Вы можете найти больше информации об os.rename() здесь, а также в нашем курсе по работе с файлами и каталогами в Python.
Теперь, когда мы понимаем механизм процесса переименования файла в Python, важно отметить, что переименование похоже на перемещение и наоборот.
Однако, если исходное и целевое расположение находятся на разных разделах, дисках или устройствах, os.rename() не будет работать. Если это так, используйте вместо этого Shutil.move().
Перемещение файлов в Python с помощью Shutil.move()
Модуль Shutil также является частью стандартного служебного модуля Python. Поэтому его не нужно устанавливать.
Shutil помогает автоматизировать процесс копирования и удаления файлов и/или каталогов. С помощью shutdown.move() можно не только переименовать файл, но и изменить каталог файла.
Давайте воспользуемся изображением, которое мы переименовали в red_sky.jpg . Мы переместим его в новую папку с названием awesome и переименуем изображение в awesome_sky.jpg. Вы готовы?
Это скриншот моего каталога фотографий перед запуском нашего скрипта.
Давайте напишем наш скрипт. Нам нужно импортировать модуль Shutil и указать начальный путь к файлу и его место назначения. Чтобы сделать код более читабельным, я присвоил начальный путь переменной src, а конечный путь — dst.
Наконец, мы вызываем метод перемещения из модуля Shutil.
Как и раньше, теперь вы можете запустить скрипт в своем терминале Python. Вот окончательный результат.
Вы можете видеть, что мы успешно переместили наш файл в каталог awesome и переименовали его в awesome_sky.jpg . Итак, в этом примере мы научились переименовывать и перемещать файлы в Python.
Отлично, не так ли?
При использовании Shutil.move() копия файла создается по пути назначения, а оригинал удаляется.
shutil.move(), в отличие от os.rename(), будет управлять разными устройствами, дисками или разделами. В этом случае функция Shutil.move() сначала скопирует файл, а затем удалит его из исходного местоположения.
Если вы не хотите менять имя файла, вам не нужно передавать его в качестве параметра назначения. Например:
Подробнее о Shutil.move() можно узнать здесь. Кроме того, не стесняйтесь проверить наш курс по работе с файлами и каталогами в Python.
Перемещение файлов в Python с помощью Shutil.copy()
Мы также можем использовать Shutil.copy() для копирования файла из одного каталога в другой. В отличие от Shutil.move() , Shutil.copy() не удалит файл из его исходного местоположения.
Давайте напишем скрипт с помощью Shutil.copy() для выполнения этой задачи.
И вот результат:
Наш файл photo_1.jpg все еще находится в нашем исходном каталоге, и наш скрипт создал копию того же файла в нашей папке data1.
shutil.copy() предоставляет нам способ перемещать файлы в Python, не удаляя их из исходных каталогов. Вы можете узнать больше об этом в документации здесь, а также в нашем курсе по работе с файлами и каталогами в Python.
Переименовать файлы в Python с помощью Path.rename() из Pathlib
Python pathlib — это объектно-ориентированная платформа для обработки путей файловой системы. Если вам интересно, как выбрать между pathlib и модулем os, есть несколько ключевых отличий.
Модуль os использует строковое представление путей, а pathlib создает объект каталога. Использование pathlib обеспечивает лучшую читабельность и удобство сопровождения кода, а также переносимость на разные операционные системы.
Давайте переименуем файл с помощью pathlib . В этом примере мы возьмем новую картинку и переименуем ее с помощью pathlib. Как видите, название нашей картинки в данный момент не очень читабельно.
Итак, давайте напишем наш скрипт. В Pathlib есть простой и интуитивно понятный способ построения путей, который можно записать так:
После того как путь к нашему текущему файлу установлен с помощью класса Path, мы используем метод переименования с новым путем и именем файла в качестве аргумента.
Посмотрите результат ниже.
Наш файл теперь называется Shooting_star.jpg . Вы можете узнать больше о библиотеке pathlib для переименования файлов в Python здесь, а также в нашем курсе по работе с файлами и каталогами в Python.
Пакетное переименование файлов в Python с помощью os.rename() и os.listdir()
Мы можем переименовывать файлы один за другим, но это может стать утомительным и/или невозможным, если у нас много файлов. Представьте, что вам нужно подготовить набор данных с тысячами изображений для обучения модели компьютерного зрения. Это просто невозможно сделать вручную.
Вместо этого мы можем пакетно переименовывать файлы в Python. Давайте выберем папку с сотнями изображений для переименования с помощью Python, чтобы автоматизировать эту задачу для нас.
Снова мы будем использовать os.rename(). Однако на этот раз нам нужно будет написать функцию, которая перебирает каталог и переименовывает файлы один за другим. Не забудьте добавить путь к папке в месте назначения.
Мы будем использовать метод os.path.join(). Первый параметр — path_name, а второй параметр — имя файла. Это делает код более читабельным и чистым. Это также упрощает повторное использование одного и того же кода в другой операционной системе.
Просто измените переменную path_name. В переменной dst вторым параметром является новое имя файла. Я присвоил новый формат файла переменной с именем new .
Функция enumerate() вернет коллекцию как объект и добавит счетчик в качестве ключа объекта.
Давайте проверим результаты:
Наши изображения были успешно переименованы. Если вы хотите узнать больше о os.listdir() , вы можете ознакомиться с документацией здесь, а также с нашим курсом по работе с файлами и каталогами в Python.
Пакетное переименование файлов в Python с помощью os.scandir()
Мы можем переименовать несколько файлов, используя os.scandir() вместо os.listdir(). os.scandir() намного быстрее, потому что он получает итератор объектов os.DirEntry.
Давайте напишем код. Мы будем использовать папку с именем data1 с несколькими изображениями. На этот раз мы переименуем наши файлы с img в качестве префикса.
Здесь, в отличие от предыдущего фрагмента, я добавил условный оператор, чтобы проверить, имеет ли файл расширение .jpg.В этом случае будут переименованы только файлы с расширением .jpg.
Не забудьте закрыть итератор os.scandir() в конце, чтобы высвободить ресурсы и сделать ваш код более эффективным.
Как видите, мы только что переименовали нашу папку data1 с помощью метода os.scandir():
Вы можете узнать больше о пакетном переименовании файлов в Python с помощью os.scandir() здесь, а также в нашем курсе по работе с файлами и каталогами в Python.
Пакетное переименование файлов в Python с помощью функции Pathlib Path.itertir()
Мы также можем пакетно переименовывать файлы в Python с помощью Path.itertir() библиотеки pathlib. Подобно os.scandir() , Path.itertir() работает быстрее, чем os.listdir() .
На этот раз у меня есть папка data1 с изображениями photo_1.jpg , photo_2.jpg . Я хочу переименовать их как img-1.jpg , img-2.jpg .
Давайте напишем скрипт, чтобы переименовать их все.
И вот результат:
Рекомендуется использовать os.scandir() или Path.itertir() из pathlib, так как эти методы лучше с точки зрения производительности, особенно в папках с огромным количеством файлов. Как правило, рекомендуется писать эффективный код, поскольку это экономит время и ресурсы.
Подробнее о пакетном переименовании файлов в Python с помощью Path.itertir() библиотеки pathlib можно прочитать здесь, а также в нашем курсе по работе с файлами и каталогами в Python.
Пакетное последовательное переименование файлов в Python
Предыдущие методы эффективны для переименования файлов, но они не сортируют файлы, чтобы поддерживать их порядок. Чтобы сохранить файлы в порядке, мы можем отсортировать их по времени последнего изменения, используя os.path.getmtime(x) . Затем мы можем переименовать файлы в соответствии со временем их модификации и добавить порядковый номер к имени файла с помощью zfill() .
Давайте напишем код для последовательного переименования наших файлов из папки с именем data. Мы хотим переименовать их в photo-01.jpg , photo-02.jpg и т. д.
Вот окончательный результат:
Пакетное переименование файлов в Python с помощью glob.glob() и glob.iglob()
В Python мы также можем использовать модуль glob для извлечения файлов и имен путей, соответствующих заданному шаблону. Использование шаблонов подстановки быстрее, чем другие методы, для сопоставления имен путей в каталогах.
Как и предыдущие модули в этой статье, он встроен в Python, поэтому нам не нужно ничего устанавливать.
Мы можем использовать glob.glob() или glob.iglob() для рекурсивного получения путей внутри каталогов и подкаталогов. В отличие от метода glob.glob(), метод glob.iglob() возвращает итератор, что означает, что не все значения сохраняются в памяти, что повышает эффективность.
Наконец, мы можем завершить операцию с помощью os.rename(), чтобы переименовать наши файлы.
Рекурсивный шаблон – это последовательность инструкций, которая возвращается к самому началу до тех пор, пока не обнаружит, что какое-то условие было выполнено (например, достижение конца того, что нужно обработать).
Прежде чем идти дальше, предостережение. Если вы решите использовать рекурсивный шаблон, будьте особенно осторожны. Вам нужно правильно задать базовый регистр, иначе это может превратиться в бесконечный цикл, и рекурсивная функция будет продолжать вызывать себя вечно.
Вероятно, вы можете себе представить ущерб, если ваш код навсегда переименует ваши файлы, один каталог за другим. Если вы хотите изучить это, установите виртуальную среду и наблюдайте, как рушится ваша операционная система.
Рекурсивные шаблоны — это мощное средство, но их необходимо ограничивать базовым случаем.
В этом примере мы будем работать с папкой data1, которая содержит множество изображений. Мы хотим переименовать их всех. Во-первых, давайте убедимся, что мы выбрали правильные файлы, отобразив имена файлов.
Вот наш вывод с использованием glob.glob():
А вот наш вывод с использованием glob.iglob() :
Наш код правильно определил изображения, которые нужно переименовать. Итак, давайте переименуем наши картинки. С glob.glob() вы можете использовать следующий код:
Метод строки zfill() переименует изображения с пятью цифрами: Pic_00001.jpg , Pic_00002.jpg и т. д. Не стесняйтесь изменять количество цифр в соответствии с вашими потребностями.
Вот окончательный результат:
Если вы предпочитаете glob.iglob() , вы можете использовать следующее:
Вот окончательный результат:
Вы можете найти больше информации о glob.glob() здесь и glob.iglob() здесь. Не забудьте также ознакомиться с нашим курсом по работе с файлами и каталогами в Python.
Пакетное переименование файлов в Python с помощью os.walk(cwd)
Давайте усложним задачу. Мы также можем получить файлы из вложенных каталогов, переименовать их и переместить в один каталог. Давайте сделаем это с помощью os.walk(cwd) .
os.walk() генерирует имена файлов в дереве каталогов, проходя по дереву сверху вниз или снизу вверх. Затем он возвращает кортеж из трех элементов ( dir_path , dir_names , file_names ).
На этот раз у меня есть изображения в двух разных папках с именами data1 и data2. Я хочу переименовать их и переместить в другую папку с именем all .
Вот моя папка data1:
А вот моя папка data2:
Давайте напишем код:
Вот результат:
Итак, наши папки data1 и data2 теперь пусты, а наши картинки переименованы и перемещены в папку all.
Подробнее об os.walk() можно узнать здесь. Вы также можете ознакомиться с нашим курсом по работе с файлами и каталогами в Python.
Заключительные мысли
В этой статье мы рассмотрели много вопросов! Мы узнали несколько способов:
- Переименовать файлы в Python
- Перемещение файлов в Python
- Пакетное переименование файлов в Python
- Пакетное перемещение файлов в Python
Не стесняйтесь повторно использовать приведенный выше код, чтобы начать работу. Поэкспериментируйте с кодом и начните автоматизировать некоторые повторяющиеся задачи с помощью Python.
Python os.rename() — это встроенный метод, который используется для переименования файла или каталога. Вы также можете переименовывать несколько файлов и папок в Python.
Переименовать файл Python
Функция Python3 os.rename() используется для переименования файла или каталога. Метод Python 3 rename() является частью модуля os и очень удобен.
Синтаксис
Параметры
Параметр src — это исходный адрес файла, который нужно переименовать.
DST — это пункт назначения с новым именем.
Этапы переименования файла с помощью Python
Допустим, мы находимся в папке с именем test, и внутри этой папки у нас есть один файл и одна папка.
Это файл app.py, а имя папки — поток.
В папке потока есть три файла.
- netflix.py
- disneyplus.py
- hbomax.py
Теперь мы переименуем файл app.py в server.py.
Шаг 1. Найдите путь к файлу или папке, который вы хотите переименовать
Перейдите в терминал и перейдите к файлу, который нужно переименовать, а затем, чтобы найти полный путь, введите в терминале следующую команду.
Хорошо, имя моей папки — test, и я нахожусь в папке test, а мой путь — /Users/krunal/Desktop/Code/pyt/test.
Шаг 2. Переименуйте файл с помощью функции os.rename()
Создайте новый файл с именем index.py в той же папке, что и app.py, и мы напишем код переименования внутри этого файла. Чтобы переименовать файл с помощью Python, нам нужно импортировать пакет os. Затем вы можете использовать следующий шаблон для переименования файла.
Итак, напишите следующий код в файле index.py.
Вывод
Функция os.rename() принимает два аргумента.
Мы уже находимся внутри тестовой папки, и нам нужно изменить файл app.py. Таким образом, мы предоставили первый аргумент как путь к источнику и второй аргумент, который является новым именем файла в качестве пути назначения.
После успешного переименования файла мы напечатали заявление.
Теперь, если вы снова запустите команду python3 index.py, вы получите сообщение об ошибке, поскольку файла app.py нет, потому что мы изменили его имя с app.py на server.py.
Вы получите FileNotFoundError.
Как переименовать папку в Python
Функция Python os.rename() также используется для переименования папки в Python.
Допустим, мы находимся внутри тестовой папки, и в тестовой папке есть еще одна папка с именем stream.
Итак, мы видим, что внутри нашей текущей папки есть два файла и одна папка с именем stream.
Теперь мы хотим изменить название папки с потока на платформу.
Напишите следующий код в файле index.py.
Вывод
В этом примере мы предоставили папку src, которую необходимо переименовать, и путь к папке назначения, который является новым именем папки.
Итак, в Python легко переименовать папку и файл.
Добавить отметку даты при переименовании файла
Существует множество сценариев, когда нам нужно проверить, когда в последний раз переименовывался файл. Мы можем использовать журнал, но здесь мы также можем использовать программирование при переименовании файла.
Давайте добавим метку времени в имя файла при переименовании файла.
Символ + используется для объединения нового имени файла, штампа даты и типа файла py.
Читайте также: