Đổi tên file trong Python | Laptrinhcanban.com

Đổi tên file trong Python

Hướng dẫn cách xử lý file trong Python. Bạn sẽ học được cách đổi tên file trong Python cũng như cách đổi tên file hàng loạt trong python bằng hàm rename() trong module os và phương thức Path.rename() trong module pathlib sau bài học này.

Đổi tên file trong Python | hàm rename()

Để Đổi tên file trong Python, chúng ta sử dụng hàm rename() trong module os với cú pháp sau đây:

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Thông thường chúng ta bỏ đi phần lớn các đối số trong hàm rename() và chỉ dùng cú pháp rút gọn sau đây để đổi tên file trong Python:

os.rename(src, dst)

Trong đó:

  • src là đường dẫn của file cần đổi tên.
  • dst là đường dẫn của file sau khi đổi tên. Đường dẫn này có thể cùng hoặc khác thư mục so với đường dẫn trước khi đổi tên.

Ví dụ, chúng ta đổi tên file trong Python như sau:

import os

oldpath = './user/user.txt'
newpath = './user/user_infor.txt'
os.rename(oldpath, newpath)

Khi đó file user.txt (nếu tồn tại trước đó) sẽ chuyển thành file user_infor.txt trong cùng thư mục user.

Khi đổi tên file trong Python, đường dẫn của file sau khi đổi tên có thể khác thư mục so với đường dẫn trước khi đổi tên.

import os

oldpath = './user/user.txt'
newpath = './infor/user_infor.txt'
os.rename(oldpath, newpath)

Khi đó, hàm rename() sẽ có thêm tác dụng di chuyển file chỉ định sang một thư mục khác với một tên khác.

Ở ví dụ trên, file user.txt trong thư mục user sẽ được di chuyển sang thư mục infor với tên mới là user_infor.txt.

Lưu ý, nếu như file cần đổi tên không tồn tại, hoặc là đường dẫn chứa thư mục sau khi đổi tên không tồn tại, lỗi FileNotFoundError sẽ bị trả về:

FileNotFoundError: [WinError 2] The system cannot find the file specified: 'user.txt'
  • Chúng ta cũng dùng hàm rename() trong module os để đổi tên thư mục trong python với cách sử dụng tương tự như trên.

Đổi tên file trong Python | phương thức Path.rename()

Chúng ta cũng có thể sử dụng phương thức Path.rename() tích hợp trong module pathlib để Đổi tên file trong Python, với cú pháp sau đây:

Path.rename(target)

Trong đó Pathtarget là các path object instance được tạo ra từ class pathlib.Path(), chứa thông tin về đường dẫn trước và sau khi đổi tên của file.

Cách sử dụng phương thức này để đổi tên file cũng khá đơn giản. Trước tiên chúng ta tạo ra một instance của class pathlib.Path() để mang thông tin đường dẫn của file cần đổi tên, sau đó xử dụng phương thức rename() với instance này để Đổi tên file trong Python, với đối số là một instance khác chứa đường dẫn của file sau khi đổi tên.

import pathlib

oldpath_ins = pathlib.Path('./user/user.txt')
newpath_ins = pathlib.Path('./user/user_infor.txt')
oldpath_ins.rename(newpath_ins)

Cũng giống với hàm rename() trong module os, chúng ta có thể chỉ định đường dẫn của file sau khi đổi tên có thể khác thư mục so với đường dẫn trước khi đổi tên. Khi đó file được chỉ định sẽ được di chuyển sang một thư mục mới với một tên khác.

import pathlib

oldpath_ins = pathlib.Path('./user/user.txt')
newpath_ins = pathlib.Path('./infor/user_infor.txt')
oldpath_ins.rename(newpath_ins)

Và lỗi FileNotFoundError sẽ bị trả về nếu như file cần đổi tên không tồn tại, hoặc là đường dẫn chứa thư mục sau khi đổi tên không tồn tại.

  • Chúng ta cũng dùng phương thức Path.rename() trong module pathlib để đổi tên thư mục trong python với cách sử dụng tương tự như trên.

Đổi tên file hàng loạt trong python

Sau đây Kiyoshi sẽ hướng dẫn bạn cách đổi tên hàng loạt các file đã có sẵn trong một thư mục một quy luật, bằng cách ứng dụng hàm rename() mà bạn vừa học ở trên.
Ví dụ: Bạn có một thư mục chứa các file và muốn đổi tên chúng theo cách nhất quán bằng cách thêm chuỗi abc_ vào trước tên file:

X.doc -> abc_X.doc
Y.txt -> abc_Y.txt
Z.doc -> abc_Z.doc

Để đổi tên hàng loạt các file trong một thư mục một cách nhất quán, hãy dùng tới hàm tự tạo sau đây:

import os

def rename_file(folder_path,change_str):
for file in os.listdir(folder_path):
old_file_path= os.path.join(folder_path,file)
if os.path.isfile(old_file_path):
old_file_name=os.path.basename(old_file_path)
new_file_name= change_str+old_file_name
new_file_path=os.path.join(folder_path,new_file_name)

os.rename(old_file_path,new_file_path)

Sau đó, bạn có thể sử dụng hàm này như sau:

folder_path ="./sample"
change_str="abc_"

rename_file(folder_path,change_str)

Hàm trên sẽ giúp thêm chuỗi ký tự “abc_” vào trước tất cả tên các file có trong thư mục sample.

Bạn có thể thay thế chuỗi ký tự thêm vào file bằng cách thay đổi giá trị của biến change_str.

change_str="xyz"

Lại nữa, hàm ở trên sẽ đổi tên đồng loạt tất cả các file có trong thư mục chỉ định. Nếu như bạn muốn chỉ đổi tên một loại file, ví dụ như các tệp * .doc, hãy sửa lại hàm bằng cách thêm so sánh đuôi file như sau:

import os

def rename_file(folder_path,change_str,file_extension):
for file in os.listdir(folder_path):
old_file_path= os.path.join(folder_path,file)
if os.path.isfile(old_file_path):
old_file_name=os.path.basename(old_file_path)
old_file_title, ext=os.path.splitext(old_file_name)
if ext==file_extension:
new_file_name= change_str+old_file_name
new_file_path=os.path.join(folder_path,new_file_name)

os.rename(old_file_path,new_file_path)

Sau đó, bạn có thể sử dụng hàm này như sau:

folder_path ="./sample"
change_str="abc_"
file_extension=".doc"
rename_file(folder_path,change_str,file_extension)

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về các cách Đổi tên file trong Python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

hoặc hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.