Python Перейменувати файл і каталог за допомогою os.rename()

⚡ Розумний підсумок

Python перейменовує файли та каталоги за допомогою os.rename(). Тут ви дізнаєтесь про os.rename(), os.renames(), shutil.move() та pathlib Path.rename(), а також як перейменувати каталог та пакетно перейменувати кілька файлів на наочних прикладах.

  • ✏️ os.rename(): os.rename(src, dst) перейменовує файл або каталог; джерело має існувати.
  • 🗂️ os.renames(): os.renames() також автоматично створює відсутні папки призначення.
  • 🚚 shutil.move(): shutil.move() перейменовує та може переміщувати файли між файловими системами.
  • 🐍 бібліотека шляхів: Path.rename() перейменовує файли об'єктно-орієнтованим способом (Python 3.4).
  • 🤖 Допомога ШІ: Інструменти штучного інтелекту, такі як Copilot, миттєво генерують код для перейменування та пакетного перейменування.

Python Перейменувати файл os.rename()

Python Перейменувати файл

Python rename() файл це метод, який використовується для перейменування файлу або каталогу Python програмування. The Python файловий метод rename() можна оголосити, передавши два аргументи з іменами src (джерело) і dst (призначення).

синтаксис

Це синтаксис методу os.rename().

os.rename(src, dst)

Параметри

src: Джерело - ім'я файлу або каталогу. Воно повинно вже існувати.

dst: Призначення – це нова назва файлу або каталогу, які потрібно змінити.

приклад:

import os  
os.rename('guru99.txt','career.guru99.txt')

Розглянемо приклад докладніше

Ви можете перейменувати оригінальний файл, ми змінили назву файлу з «Guru«99.txt» на «Career.guru99.txt».

Python Перейменувати файл

  • Щоб перейменувати файл «guru99.txt», ми будемо використовувати «функцію перейменування» в модулі ОС
  • Отже, коли код виконується, ви можете помітити, що в правій частині панелі створюється новий файл «career.guru99.txt», який ми перейменували на вихідний файл.

Ось повний код

import os
import shutil
from os import path

def main():
	# make a duplicate of an existing file
    if path.exists("guru99.txt"):
	# get the path to the file in the current directory
        src = path.realpath("guru99.txt");
		
	# rename the original file
        os.rename('guru99.txt','career.guru99.txt') 
		
if __name__ == "__main__":
    main()

Як перейменувати каталог у Python

Метод os.rename() також перейменовує каталоги, а не лише файли. Передайте поточну назву папки як джерело, а нову назву як місце призначення.

import os
os.rename("old_directory", "new_directory")

Якщо вихідний каталог не існує, Python викликає помилку FileNotFoundError, тому гарною практикою є спочатку перевірити шлях.

Перейменування файлу за допомогою os.renames()

Метод os.renames() перейменовує файл і автоматично створює будь-які відсутні проміжні каталоги в шляху призначення. Він також видаляє порожні каталоги, що залишилися в шляху джерела.

import os
os.renames("guru99.txt", "archive/2024/career.txt")

Тут папки archive та 2024 створюються автоматично, якщо їх ще не існує.

Перейменування файлу за допомогою shutil.move()

Функція shutil.move() переміщує файл у нове місце, що фактично перейменовує його, якщо місцем призначення є той самий каталог.

import shutil
shutil.move("guru99.txt", "career.guru99.txt")

На відміну від os.rename(), shutil.move() також може переміщувати файл між різними файловими системами або дисками.

Перейменування файлу за допомогою модуля pathlib

In Python Починаючи з версії 3.4 та пізніших, модуль pathlib пропонує об'єктно-орієнтований метод Path.rename() для перейменування файлів.

from pathlib import Path

file = Path("guru99.txt")
file.rename("career.guru99.txt")

Метод rename() повертає новий об'єкт Path, який вказує на перейменований файл.

Як перейменувати кілька файлів у Python

Щоб перейменувати багато файлів одночасно, переберіть файли в каталозі за допомогою os.listdir() та викличте os.rename() для кожного з них. У наведеному нижче прикладі до кожного файлу додається префікс з номером.

import os

folder = "myfiles"
for count, filename in enumerate(os.listdir(folder)):
    new_name = f"file_{count}.txt"
    os.rename(os.path.join(folder, filename), os.path.join(folder, new_name))

Використання os.path.join() забезпечує коректну роботу коду на будь-якій операційній системі.

Поширені запитання

Імпортуйте os та викличте os.rename(src, dst), передаючи поточну назву файлу та нову назву. Вихідний файл має вже існувати, або Python викликає помилку FileNotFoundError.

os.rename() перейменовує окремий файл або каталог, тоді як os.renames() також створює будь-які відсутні проміжні каталоги та видаляє порожні вихідні папки після переміщення.

Так. shutil.move(src, dst) перейменовує файл, якщо місцем призначення є та сама папка, а також може переміщувати файли між різними файловими системами, на відміну від os.rename().

Використовуйте os.rename('old_dir', 'new_dir'). Одна й та сама функція os.rename() працює як для файлів, так і для каталогів, за умови, що вихідний каталог існує.

Переберіть os.listdir(folder) у циклі та викличте os.rename() для кожного файлу. Використовуйте os.path.join() для створення повних шляхів, щоб код працював на будь-якій операційній системі.

Помічники штучного інтелекту, такі як GitHub Copilot, автоматично завершують виклики os.rename() та pathlib, а також генерують цикли пакетного перейменування з коментаря, що описує потрібний шаблон іменування.

Так. Інструменти на базі штучного інтелекту можуть автоматизувати написання скриптів пакетного перейменування, застосовувати шаблони, такі як нумерація або префікси дат, а також додавати обробку помилок для відсутніх або дублікатних імен.

On Windows, os.rename() викликає FileExistsError, якщо місце призначення існує. У Unix він непомітно перезаписує. Спочатку перевірте за допомогою os.path.exists(), щоб уникнути втрати даних.

Підсумуйте цей пост за допомогою: