Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python Move File: Hướng Dẫn Hoàn Chỉnh

Phương thức shutil.move() trong Python di chuyển một tệp (file) đến vị trí khác trên máy tính. Phương thức này thuộc module shutil, bạn phải import module này trước khi dùng.

Di chuyển tệp là thao tác phổ biến trong chương trình Python. Ví dụ, bạn tạo chương trình sinh ra các tệp. Bạn có thể muốn di chuyển tất cả tệp hiện có trong một thư mục sang nơi khác, để chừa chỗ cho tệp mới sẽ tạo.

Đó là lúc hàm shutil.move() phát huy tác dụng. Hàm shutil.move() cho phép di chuyển tệp từ thư mục này sang thư mục khác trên hệ thống. Hướng dẫn này sẽ thảo luận, kèm ví dụ, cách dùng hàm shutil.move() để di chuyển tệp.

Module shutil Trong Python

Module shutil cung cấp nhiều thao tác cấp cao (high-level operations) thực thi trên tệp. Khác với thư viện os, shutil đi kèm các hàm có thể thực thi trên tập hợp tệp (collections of files).

Trong hướng dẫn này, chúng ta tập trung vào hàm shutil.move(), cho phép di chuyển tệp bằng Python.

Trước khi khám phá hàm move(), trước tiên phải import thư viện shutil vào code. Làm bằng câu lệnh import Python:

import shutil

Di Chuyển Tệp Trong Python

Hàm shutil.move() di chuyển một tệp trên máy tính. Phương thức này nhận đường dẫn tệp muốn di chuyển và đường dẫn tệp mới làm tham số.

Cú pháp hàm này:

shutil.move(source, destination)

shutil.move() nhận hai tham số:

  • source path: Đường dẫn tệp muốn di chuyển.
  • destination path: Đường dẫn nơi bạn muốn di chuyển tệp đến.

Hàm move() trả về đường dẫn của tệp đã di chuyển.

Nếu đích (destination) trùng với tệp đã tồn tại, tệp hiện có sẽ bị ghi đè (overwritten).

Các đường dẫn tệp bạn chỉ định có thể là tuyệt đối (absolute) hoặc tương đối (relative).

Đường dẫn tuyệt đối là đường dẫn hoàn chỉnh dẫn trực tiếp đến tệp (ví dụ: /home/career_karma/file.txt). Đường dẫn tương đối tham chiếu đến vị trí liên quan đến thư mục đang chạy chương trình Python (ví dụ: file.txt).

Nếu bạn chỉ định thư mục đích không tồn tại, một thư mục mới sẽ được tạo.

Thư viện os chứa phương thức os.rename() thường dùng để đổi tên tệp. Phương pháp này cũng có thể di chuyển tệp. Nhưng phương thức shutil được thiết kế chuyên biệt cho việc di chuyển tệp. Cú pháp shutil.move() dễ hiểu hơn os.rename() khi di chuyển tệp.

Ví Dụ Di Chuyển Tệp Trong Python

Hãy khám phá một vài ví dụ cách dùng hàm shutil.move().

Di Chuyển Một Tệp Đơn Lẻ

Giả sử có tệp tên raw_data.csv muốn di chuyển vào thư mục data trong thư mục làm việc hiện tại. Làm như sau:

import shutil
source = "raw_data.csv"
destination = "data"
new_path = shutil.move(source, destination)
print(new_path)

Kết quả trả về:

data/raw_data.csv

Trước tiên, import thư viện shutil. Tiếp theo, khai báo hai biến Python. Biến source lưu tên tệp muốn di chuyển. Biến destination lưu tên thư mục muốn di chuyển tệp đến.

Trong ví dụ này, chúng ta chỉ định đường dẫn tương đối cho source và destination. Nghĩa là tệp raw_data.csv và thư mục data tham chiếu đến những thứ trong cùng thư mục với tệp Python. Nếu tệp Python lưu tại /home/career_karma/program, tệp và thư mục tham chiếu sẽ là những thứ lưu trong thư mục đó.

Tiếp theo, dùng shutil.move() di chuyển tệp. Gán kết quả thao tác — đường dẫn tệp đã di chuyển — cho biến new_path. Sau đó in giá trị new_path, trả về đường dẫn tệp mới.

Chúng ta đã di chuyển thành công một tệp trong Python.

Lưu ý: Cú pháp tương tự dùng để di chuyển tệp cũng có thể dùng để di chuyển thư mục.

Di Chuyển Tệp Và Đổi Tên

Hàm shutil.move() cho phép đổi tên tệp sau khi di chuyển.

Giả sử muốn di chuyển raw_data.csv vào thư mục data, và đổi tên tệp thành raw_data_2019.csv. Làm như sau:

import shutil
source = "raw_data.csv"
destination = "data/raw_data_2019.csv"
new_path = shutil.move(source, destination)
print(new_path)

Kết quả trả về:

data/raw_data_2019.csv

Khi chỉ định đích cho tệp mới, chúng ta cũng chỉ định tên mới cho tệp. Chỉ định đích data/raw_data_2019.csv. Nghĩa là khi tệp được di chuyển, nó sẽ vào thư mục data và được đặt tên raw_data_2019.csv.

Di Chuyển Nhiều Tệp

Chúng ta cũng có thể dùng shutil.move() để di chuyển nhiều tệp. Lúc này cũng tham chiếu thư viện os. Dùng phương thức os.listdir() lấy danh sách tệp trong thư mục.

Giả sử muốn di chuyển tất cả tệp trong thư mục /home/career_karma/data sang thư mục mới /home/career_karma/old_data. Thư mục data chứa các tệp:

  • /home/career_karma/data/data.csv
  • /home/career_karma/data/old_data.csv

Code thực hiện:

import shutil
import os
source = "/home/career_karma/data"
destination = "/home/career_karma/old_data"
files = os.listdir(source)
for file in files:
    new_path = shutil.move(f"{source}/{file}", destination)
    print(new_path)

Kết quả trả về:

/home/career_karma/old_data/data.csv
/home/career_karma/old_data/old_data.csv

Phân tích code: Trước tiên, import thư viện shutil và os vào chương trình. Sau đó chỉ định đường dẫn tuyệt đối cho thư mục muốn di chuyển nội dung. Cũng chỉ định đường dẫn đích cho nội dung thư mục.

Tiếp theo, dùng os.listdir() lấy danh sách tất cả tệp trong thư mục nguồn. Dùng vòng lặp for Python duyệt qua từng tệp. Sau đó dùng shutil.move() di chuyển từng tệp riêng lẻ đến thư mục destination.

Trong hàm move(), dùng f-string chỉ định đường dẫn đầy đủ cho tệp muốn di chuyển. Code hiển thị đường dẫn tệp vừa di chuyển.

Kết Luận

Hàm shutil.move() di chuyển tệp từ vị trí này sang vị trí khác trên máy tính. Bạn phải chỉ định đường dẫn tệp muốn di chuyển cũng như đường dẫn mới cho tệp.

Muốn tìm hiểu thêm về lập trình Python? Xem hướng dẫn How to Learn Python của chúng tôi. Bạn sẽ tìm thấy lời khuyên chuyên gia về cách học Python trong hướng dẫn này. Hướng dẫn cũng chứa danh sách tài nguyên học tập hàng đầu giúp mở rộng kiến thức.