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

Как переименовать файл в python

  • автор:

Как переименовать файлы в Python

Если имеется только имя файла, воспользуемся os.path.splitext() , который возвращает кортеж из имени файла и расширения:

import os for file in os.listdir():  name, ext = os.path.splitext(file) # return ('путь до файла без расщирения', '.txt')  new_name = f"name>_newext>"  os.rename(file, new_name) 

pathlib

С помощью встроенного модуля pathlib

Path.rename(new_name) 
from pathlib import Path for file in os.listdir():  f = Path(file)  new_name = f"f.stem>_newf.suffix>"  f.rename(new_name) 

shutil.move

Модуль Shutil предлагает ряд высокоуровневых операций с файлами и коллекциями файлов. В частности, предусмотрены функции, поддерживающие копирование и удаление файлов.

import shutil  old_source = '/Users/r/Desktop/old_source.txt' new_source = '/Users/r/Desktop/new_source.txt'  newFileName = shutil.move(old_source, new_source)  print("Новый файл:", newFileName) # Новый файл: /Users/r/Desktop/new_source.txt 

Переименовать все файлы в папке — Python

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

while есть еще файлы n +=1 . ('n' + '.' + 'касширение') перейти к следующему файлу 

просмотрел достаточно много документации, но так и не нашел, как это можно сделать. Мне нужен именно этот кусочек кода, отвечающий за пока есть файл: переименовывать его, перейти к следующему, переименовать его. Допустим в папке 200 фото формата png(который задал пользователь) с названием из каши символов и в конце работы программы они превратятся в 200 файлов с названием от 1.png до 200.png, или наоборот пользователю нужна каша(с этим я разберусь, если пойму хотя бы, как сделать то, что я спрашивал)

Отслеживать
задан 3 фев 2020 в 15:40
59 2 2 серебряных знака 11 11 бронзовых знаков

4 ответа 4

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

Полностью рабочий код.

import os from tkinter import * from tkinter import filedialog as fd def selectDir(): return fd.askdirectory()+'/' def startRename(directory): directory1=directory.replace('/', '\\') ext = ent1.get() files=sorted([path for path in os.listdir(directory) if os.path.isfile(directory+path) and path.endswith(ext)]) i=0 while files: file=files[0] if not os.path.isfile(f'.'): name = f'.' os.rename(directory1+file, directory1+name) del files[0] i+=1 root = Tk() root.geometry('350x75') l1=Label(text='Расширение файла (без точки)') l1.grid(row=0, column=0) ent1 = Entry() ent1.grid(row=1, column=0) b1 = Button(text='Выбрать папку', command=lambda: startRename(selectDir())) b1.grid(row=0,column=1) root.mainloop() 

Вариант №2 (без выбора расширения):

import os from tkinter import * from tkinter import filedialog as fd def selectDir(): return fd.askdirectory()+'/' def startRename(directory): directory1=directory.replace('/', '\\') files=sorted([path for path in os.listdir(directory) if os.path.isfile(directory+path)]) i=0 while files: file=files[0] ext=file.split('.')[-1] if not os.path.isfile(f'.'): name = f'.' os.rename(directory1+file, directory1+name) del files[0] i+=1 root = Tk() root.geometry('350x75') b1 = Button(text='Выбрать папку', command=lambda: startRename(selectDir())) b1.grid(row=0,column=1) root.mainloop() 

Переименовать или заменить файл (каталог) средствами pathlib

Описанные ниже методы позволяют переименовать/заменить файл или каталог средствами модуля pathlib . Данные методы принадлежат экземпляру, созданному из класса Path() .

Так как класс pathlib.Path() наследуется от класса pathlib.PurePath() , следовательно он поддерживает все операции по манипуляции с путями файловой системы.

Смотрите другие методы и свойства, доступные экземпляру класса Path() модуля pathlib .

Содержание:

  • Переименовать файл (каталог)
  • Заменить файл (каталог)
Path.rename(target) :

Метод Path.rename() переименует файл или каталог пути path в указанную цель target . Значение target может быть либо строкой, либо другим объектом пути.

  • С версии Python-3.8 метод Path.rename() вернет новый экземпляр pathlib.Path() , содержащий новый путь.
  • Если target является объектом пути, то его можно использовать для дальнейших манипуляций файлом с новым именем.
  • В Unix, если target существует и является файлом, то он будет автоматически заменен, если у пользователя есть разрешение.
>>> from pathlib import Path >>> p = Path('foo') >>> p.open('w').write('some text') # 9 >>> target = Path('bar') >>> p.rename(target) >>> target.open().read() # 'some text' >>> target.unlink() 
Path.replace(target) :

Метод Path.replace() переименует файл или каталог пути path в указанную цель target . Значение target может быть либо строкой, либо другим объектом пути.

  • С версии Python-3.8 метод Path.rename() вернет новый экземпляр pathlib.Path() , содержащий новый путь.
  • Если target является объектом пути, то его можно использовать для дальнейших манипуляций файлом с новым именем.
  • Если target указывает на существующий файл или каталог, то он будет безоговорочно заменен.
>>> p = Path('myfile.txt') >>> p.write_text('This is short text') 18 >>> p.replace('other-file.ext') # Поведение метода до версии Python-3.8 >>> p.is_file() # False >>> p # PosixPath('myfile.txt') >>> p = Path('other-file.ext') >>> p.read_text() # 'This is short text' >>> p.unlink() 
  • КРАТКИЙ ОБЗОР МАТЕРИАЛА.
  • Класс pathlib.PurePath() и его подклассы
  • Класс pathlib.Path() и его подклассы
  • Манипуляции с путями файловой системы средствами pathlib
  • Проверить наличие файла/каталога/ссылки и т.д. средствами pathlib
  • Открытие файла, чтение и запись информации средствами pathlib
  • Определение положения в файловой системе средствами pathlib
  • Список файлов в папке/каталоге по шаблону средствами pathlib
  • Создание/удаление файла/каталога или ссылки средствами pathlib
  • Получение информации о файле/каталоге средствами pathlib
  • Изменение режима доступа к файлу или каталогу средствами pathlib
  • Переименование/замена файла или каталога средствами pathlib
  • Преобразование объекта пути pathlib в строку
  • Метод walk() модуля pathlib, рекурсивный обход каталога
  • Сравнение pathlib с модулями os и os.path

Функция rename() модуля os в Python

Функция rename() модуля os переименовывает файл или каталог с именем src в dst . Если имя dst уже существует, то операция os.rename() , в ряде случаев, может завершится с подклассом исключения OSError .

В Windows, если dst уже существует, всегда возникает ошибка FileExistsError .

В Unix, если src — это файл, а dst — это каталог или наоборот, то поднимаются исключения IsADirectoryError или NotADirectoryError соответственно.

Если оба являются каталогами и dst пуст, то dst будет заменен без уведомления.Если dst является непустым каталогом, возникает OSError .Если оба являются файлами, то dst будет заменен без уведомления, если у пользователя есть разрешение.

Операция может завершиться с ошибкой на некоторых разновидностях Unix, если src и dst находятся на разных файловых системах. В случае успеха, переименование будет атомарной операцией, это требование POSIX.

Аргументы src и dst могут принимать объекты, представляющие путь файловой системы, такие как pathlib.PurePath .

Функция os.rename() может поддерживать указание src_dir_fd и/или dst_dir_fd для предоставления путей относительно дескриптора каталога.

Если необходимо кросс-платформенное переименование, то используйте функцию os.replace() .

Примеры использования:
>>> import os >>> scr_dir, dst_dir = 'test_dir', 'rename_dir' >>> os.mkdir(scr_dir, 0o774) # переименовывание >>> os.rename(scr_dir, dst_dir) >>> os.path.isdir(dst_dir) # True >>> os.rmdir(dst_dir) >>> scr_f, dst_f = 'test_file.txt', 'rename_file.txt' # создадим файл >>> fp = open(scr_f, 'w') >>> fp.write('data string') >>> fp.close() # переименовывание >>> os.rename(scr_f, dst_f) >>> os.path.isfile(dst_f) # True >>> os.unlink(dst_f) 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Управление переменной средой окружения системы
  • Представление пути в файловой системе
  • Извлечение/установка uid, gid и pid процесса
  • Наследование файловых дескрипторов
  • Создание дескриптора файла, чтение, запись и его закрытие
  • Функция listdir() модуля os
  • Функция walk() модуля os
  • Функция scandir() модуля os
  • Объект DirEntry() модуля os
  • Функция stat() модуля os
  • Объект stat_result, результаты выполнения os.stat()
  • Функция lstat() модуля os
  • Функция access() модуля os
  • Функция chdir() модуля os
  • Функция chmod() модуля os
  • Функция chown() модуля os
  • Функция chroot() модуля os
  • Функция getcwd() модуля os
  • Функция link() модуля os
  • Функция mkdir() модуля os
  • Функция makedirs() модуля os
  • Функция symlink() модуля os
  • Функция readlink() модуля os
  • Функция remove() модуля os, удалить файл
  • Функция removedirs() модуля os
  • Функция rename() модуля os
  • Функция renames() модуля os
  • Функция replace() модуля os
  • Функция rmdir() модуля os
  • Функция strerror() модуля os
  • Функция supports_dir_fd модуля os
  • Функция supports_effective_ids модуля os
  • Функция supports_fd модуля os
  • Функция supports_follow_symlinks модуля os
  • Функция truncate() модуля os
  • Функция utime() модуля os
  • Манипулирование списком контроля доступа ACL в Linux
  • Функция abort() модуля os
  • Функция exec*() модуля os
  • Функция popen() модуля os
  • Функция system() модуля os
  • Функция _exit() модуля os
  • Функция fork() модуля os
  • Функция kill() модуля os
  • Функция spawn() модуля os
  • Функция umask() модуля os
  • Функция uname() модуля os
  • Функция wait() модуля os
  • Функция waitpid() модуля os
  • Определение состояния процесса
  • Константы для поддержки операций с путями
  • Генератор случайных байтов на основе модуля os
  • Функция startfile() модуля os
  • Функция times() модуля os
  • Функции getloadavg() и cpu_count() модуля os
  • Функция waitstatus_to_exitcode() модуля os
  • Функция listdrives() модуля os, имена дисков Windows
  • Функция listmounts() модуля os, точки монтирования Windows
  • Функция listvolumes() модуля os, список томов Windows

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

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