Phương thức sao chép tệp trong Python
Python cung cấp các chức năng tích hợp sẵn để dễ dàng sao chép tệp bằng các tiện ích của Hệ điều hành Hệ điều hành.
Lệnh sau được sử dụng để sao chép tệp
shutil.copy(src,dst)
Lệnh sau được sử dụng để sao chép tệp với thông tin siêu dữ liệu
shutil.copystat(src,dst)
Đây là các bước để sao chép tệp bằng Python
Bước 1) Trước khi sao chép một tệp, chúng ta cần lấy đường dẫn đến tệp gốc trong thư mục hiện tại. Trong mã -
- Khai báo biến
- Áp dụng hàm chia trên biến
Giải thích mã
- Đầu tiên, chúng tôi sẽ kiểm tra xem tệp "guru99.txt" của chúng tôi có tồn tại hay không. Vì chúng tôi đã tạo tệp guru99.txt trước đó, chúng tôi biết nó tồn tại và chúng tôi sẽ tiếp tục với mã
- Chúng tôi lưu trữ đường dẫn tệp trong biến " src " nếu tệp của bạn tồn tại
- Khi chúng ta có được đường dẫn, chúng ta sẽ tách đường dẫn và tên tệp
- Vì vậy, chúng ta sẽ sử dụng
path.split
hàm phân tách trên biến nguồn - Mã khi được thực thi in ra " tên tệp " và " đường dẫn tệp " riêng biệt
Bước 2) Chúng tôi sử dụng Mô-đun Shutil để tạo bản sao của tệp hiện có. Ở đây, chúng tôi đã sử dụng để tạo bản sao của tệp hiện có "guru99.txt".
Giải thích mã
- Lấy tên tệp gốc là "guru99.txt" và thêm các chữ cái .bak vào cuối "guru99.txt.bak". Tên có phần mở rộng .bak này sẽ là bản sao của chúng tôi
- Và sau đó chúng ta sẽ sử dụng chức năng sao chép của tiện ích để sao chép từ nguồn đến đích
- Khi bạn chạy mã, bạn sẽ thấy một tệp trùng lặp có phần mở rộng .bak được tạo ở phía bên phải của bảng điều khiển
Bước 3) Chức năng Copy chỉ sao chép nội dung của tập tin mà không có thông tin nào khác. Để sao chép siêu dữ liệu được liên kết với tệp, quyền đối với tệp và các thông tin khác, bạn phải sử dụng chức năng " copystat ". Trước khi chúng tôi chạy mã này, chúng tôi phải xóa tệp sao chép "guru99.text.bak".
Sau khi bạn xóa tệp và chạy chương trình, nó sẽ tạo một bản sao của tệp .txt của bạn nhưng lần này với tất cả các thông tin như quyền tệp, thời gian sửa đổi và thông tin siêu dữ liệu . Bạn có thể vào hệ điều hành của mình để xác minh thông tin.
Đây là mã
import osimport shutilfrom os import pathdef main():# make a duplicate of an existing fileif path.exists("guru99.txt"):# get the path to the file in the current directorysrc = path.realpath("guru99.txt");#seperate the path from the filterhead, tail = path.split(src)print("path: +head)print("file: +tail)#let's make a backup copy by appending "bak" to the namedst = src+".bak"# nowuse the shell to make a copy of the fileshutil.copy(src, dst)#copy over the permissions,modificationshutil.copystat(src,dst)if __name__=="__main__":main()
Bước 4) Bạn có thể tìm nạp thông tin về tệp văn bản được sửa đổi lần cuối
- Dòng Mã # 15- Nó cho biết ngày, tháng, năm và thời gian khi tệp .txt (guru99) được sửa đổi lần cuối. Chúng tôi sử dụng mô-đun đường dẫn để lấy chi tiết thời gian sửa đổi tệp, và sau đó chúng tôi sẽ sử dụng hàm thời gian của các lớp thời gian c để chuyển đổi thành thời gian có thể đọc được. Vì vậy, khi chúng tôi chạy mã này, chúng ta có thể thấy các tập tin guru99.txt được sửa đổi lần cuối vào Mon, 08 Tháng 1 thứ tại 13:35 2018.
- Dòng Mã # 17- Nó cũng thực hiện điều tương tự khi cung cấp thông tin về việc sửa đổi tệp, nhưng nó có một định dạng khác để đại diện cho nó. Ở đây chúng tôi sử dụng hàm Get Modification Time (path.getmtime ("guru99.txt")). Bây giờ thay vì sử dụng hàm c time, chúng ta sẽ sử dụng hàm From Time Stamp và xây dựng một đối tượng date time. Trong đầu ra, bạn có thể thấy chi tiết thời gian sửa đổi tệp được in ra ở định dạng khác nhau 2018-01-08, 13: 35: 51.334072
Đây là mã
## Example file for working with o.s path moduleimport osfrom os import pathimport datetimefrom datetime import date, time, timedeltaimport timedef main():# Get the modification timet = time.ctime(path.getmtime("guru99.txt.bak"))print(t)print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))if __name__ == "__main__":main()
Tóm lược
- Để tạo bản sao của tệp hiện có bằng cách sử dụng mã shutil.copy (src, dst)
- Để sao chép tất cả thông tin của tệp gốc sang tệp trùng lặp như quyền tệp, thời gian sửa đổi hoặc thông tin siêu dữ liệu bằng cách sử dụng mã shutil.copystat (src, dst)