Hướng dẫn cách copy file trong python. Bạn sẽ học được các cách sao chép file trong python như copy nội dung file, copy nội dung file kèm quyền truy cập, copy nội dung file kèm quyền truy cập và metadata. Bạn cũng sẽ học được cách sử dụng các chức năng copy tương ứng của module shutil như shutil.copyfile, shutil.copy, shutil.copy2 và shutil.copytree sau bài học này.
Chúng ta có thể sử dụng các chức năng copy sau đây trong module shutil để copy file trong python:
Hàm | Cú pháp | Chức năng |
---|---|---|
shutil.copyfile | copyfile(src, dst) | Copy nội dung một file |
shutil.copy | copy(src, dst) | Copy nội dung một file kèm quyền truy cập |
shutil.copy2 | copy2(src, dst) | Copy nội dung một file kèm Permission và Metadata |
shutil.copytree | copytree(src, dst) | Copy toàn bộ file trong một thư mục |
Trong đó:
src
là viết tắt của source - nguồn sao chépdst
là viết tắt của destination - đích sao chépPermission
là quyền truy cập vào fileMetadata
là siêu dữ liệu - dữ liệu để mô tả file như là thời gian tạo, thời gian sửa đổi và các thông tin khác.
Copy nội dung file trong python | shutil.copyfile
Để copy nội dung file trong python, chúng ta sử dụng shutil.copyfile với cú pháp sau đây:
import shutil
shutil.copyfile( src , dst )
Trong đó:
src
là đường dẫn của file nguồn, ví dụ nhưD:\test\a.txt
dst
là đường dẫn của file đích, ví dụ nhưD:\data\b.txt
Ví dụ, chúng ta có một thư mục như sau:
| |--dir1 | | | |--sample.txt | |--dir2 | |--copyfile_sample.py
Chúng ta sẽ copy nội dung file sample.txt
bằng file copyfile_sample.py
với cách viết như sau:
import shutil |
Kết quả, file sample.txt
được phục chế và lưu lại với tên sample_copy1.txt'
trong cùng thư mục dir1
, và sample_copy2.txt
trong một thư mục khác dir2
như sau:
| |--dir1 | | | |--sample.txt | |--sample_copy1.txt | |--dir2 | |--sample_copy2.txt | |--copyfile_sample.py
Sau khi copy file, một file mới với nội dung giống với file nguồn nhưng khác quyền truy cập, thời gian tạo, thời gian sửa đổi v.vv khác với file ban đầu sẽ được tạo ra. Bạn có thể kiểm tra bằng cách nhấn chuột phải vào file, chọn Properties và so sánh thông tin giữa hai file.
Copy nội dung file kèm Permission trong python | shutil.copy
Với shutil.copyfile chúng ta chỉ có thể copy nội dung file. Để copy nội dung file kèm cả Permission - quyền hạn truy cập file trong python, chúng ta sử dụng shutil.copy với cú pháp sau đây:
import shutil
shutil.copy( src , dst )
Trong đó:
src
là đường dẫn của file nguồn, ví dụ nhưD:\test\a.txt
dst
là đường dẫn của file hoặc thư mục đích, ví dụ nhưD:\data\b.txt
hoặcD:\data
. Nếudst
là đường dẫn file thì file nguồn sẽ được sao chép thành file mới với tên được chỉ định. Nếudst
là một thư mục thì file nguồn sẽ được sao chép thành file mới cùng tên.
Ví dụ, để sao chép file cùng tên, chúng ta có thể dùng một trong hai cách viết sau:
import shutil |
Và để sao chép file với một tên khác:
import shutil |
Sau khi copy file, một file mới với nội dung và quyền truy cập giống với file nguồn nhưng khác thời gian tạo, thời gian sửa đổi v.vv . Bạn có thể kiểm tra bằng cách nhấn chuột phải vào file, chọn Properties và so sánh thông tin giữa hai file.
Copy nội dung file kèm Permission và Metadata trong python | shutil.copy2
Lưu ý rằng shutil.copy giúp chúng ta sao chép dữ liệu và quyền của tệp, nhưng lại không sao chép metadata-dữ liệu để mô tả file như là thời gian tạo, thời gian sửa đổi và các thông tin khác.
Để copy nội dung file kèm Permission và Metadata trong python, chúng ta cần dùng tới shutil.copy2 với cú pháp sau đây:
import shutil
shutil.copy2( src , dst )
Trong đó, cũng giống như với shutil.copy:
src
là đường dẫn của file nguồn, ví dụ nhưD:\test\a.txt
dst
là đường dẫn của file hoặc thư mục đích, ví dụ nhưD:\data\b.txt
hoặcD:\data
. Nếudst
là đường dẫn file thì file nguồn sẽ được sao chép thành file mới với tên được chỉ định. Nếudst
là một thư mục thì file nguồn sẽ được sao chép thành file mới cùng tên.
Cách sử dụng shutil.copy2 cũng tương tự shutil.copy như ví dụ sau:
import shutil |
Sau khi copy file, một file mới với nội dung, quyền truy cập, thời gian tạo, thời gian sửa đổi và các thông tin khác giống với file nguồn sẽ được tạo ra. Bạn có thể kiểm tra bằng cách nhấn chuột phải vào file, chọn Properties và so sánh thông tin giữa hai file.
Copy toàn bộ file trong thư mục | shutil.copytree
Ở phần trên chúng ta đã biết cách sử dụng 3 chức năng copy để copy một file trong python.
Lưu ý rằng bạn không thể chỉ định đối số src
trong ba chức năng ở trên bằng thư mục, để copy thư mục trong python, vì lỗi sẽ xảy ra như sau:
shutil.copy('./sample', './sample_02') |
Nếu bạn muốn copy toàn bộ file trong thư mục, hãy sử dụng tới shutil.copytree với cú pháp sau đây:
import shutil
shutil.copytree( src , dst )
Trong đó
src
là đường dẫn của thư mục nguồn, ví dụ nhưD:\sample
dst
là đường dẫn của thư mục đích, ví dụ nhưD:\sample_backup
.
Nếu thư mục đích không tồn tại, thư mục đích sẽ được tạo ra và sau đó toàn bộ file trong thư mục nguồn sẽ được copy sang thư mục đích.
import shutil |
Tuy nhiên nếu như thư mục đích đó đã tồn tại, lỗi FileExistsError
sẽ bị trả về:
Traceback (most recent call last): |
Tổng kết và thực hành
Trên đây Kiyoshi đã hướng dẫn bạn về cách copy 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é.
Và 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.
URL Link
HOME › python cơ bản - lập trình python cho người mới bắt đầu>>16. xử lý file trong python