Sao chép tập tin vào Python: phương thức Shutil.copy(), Shutil.copystat()

Python Sao chép phương thức tệp

Python cung cấp các chức năng dựng sẵn để dễ dàng sao chép tệp bằng cách sử dụng Operacác tiện ích System Shell.

Lệnh sau được sử dụng để sao chép tập tin

shutil.copy(src,dst)

Lệnh sau được sử dụng để Sao chép Tệp có Thông tin Siêu dữ liệu

shutil.copystat(src,dst)

Cách sao chép một tập tin trong Python

Dưới đây là các bước để sao chép tập tin vào Python sử dụng phương thức Shutil copy():

Bước 1) Chụp đường dẫn gốc trong thư mục hiện tại
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ã –

  1. Khai báo biến
  2. Áp dụng hàm phân tách trên biến

Sao chép một tập tin vào Python

Giải thích mã

  • Đầu tiên chúng ta sẽ kiểm tra xem tệp “guru99.txt” của chúng ta có tồn tại hay không. Vì chúng tôi đã tạo tệp guru99.txt trước đó nên 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 tin của bạn tồn tại
  • Sau khi nhận được đường dẫn, chúng ta sẽ tách đường dẫn và tên tệp
  • Để làm được điều đó, chúng ta sẽ sử dụng phép chia path.split hàm trên biến nguồn
  • Mã khi được thực thi sẽ in ra “tên tập tin"Và"đường dẫn tập tin" riêng biệt

Bước 2) Tạo một bản sao của tệp hiện có của chúng tôi bằng mô-đun Shutil
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 thường tạo một bản sao của tệp hiện có “guru99.txt.”

Sao chép một tập tin vào Python

Giải thích mã

  • Lấy tên file gốc “guru99.txt” và thêm chữ cái .bak vào cuối “guru99.txt.bak”. Tên này có phần mở rộng .bak 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 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) Sao chép siêu dữ liệu được liên kết với tệp, quyền truy cập tệp và thông tin khác
Chức năng sao chép 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 metadata được liên kết với tệp, quyền của tệp và thông tin khác mà bạn phải sử dụng “bản sao" chức năng. Trước khi chạy mã này, chúng ta phải xóa tệp sao chép “guru99.text.bak”.

Sao chép một tập tin vào Python

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 có tất cả thông tin như quyền truy cập tệp, thời gian sửa đổi và thông tin siêu dữ liệu. Bạn có thể vào OS shell của mình để xác minh thông tin.

Sao chép một tập tin vào Python

Đây là mã

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");
    
	#seperate the path from the filter
	head, tail = path.split(src)
	print("path:" +head)
	print("file:" +tail)
	
	#let's make a backup copy by appending "bak" to the name
	dst = src+".bak"
	# nowuse the shell to make a copy of the file
	shutil.copy(src, dst)
	
	#copy over the permissions,modification
	shutil.copystat(src,dst)
	
if __name__=="__main__":
	main()

Bước 4) Lấy thông tin
Bạn có thể lấy thông tin về tệp văn bản được sửa đổi lần cuối

Sao chép một tập tin vào Python

  • Dòng mã số 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 thông tin chi tiết về thời gian sửa đổi tệp, sau đó chúng tôi sẽ sử dụng lớp thời gian c hàm thời gian để chuyển đổi nó thành một thời gian có thể đọc được. Vì vậy, khi chạy mã, chúng ta có thể thấy tệp guru99.txt được sửa đổi lần cuối vào ngày Thứ Hai, ngày 8 tháng Mộtth vào lúc 13:35 2018.
  • Dòng mã số 17- Nó thực hiện tương tự việc cung cấp thông tin về sửa đổi tệp, nhưng nó có định dạng khác để thể hiện thông tin đó. Ở đây chúng tôi sử dụng Nhận chức năng Thời gian sửa đổi (path.getmtime(“guru99.txt”)). Bây giờ thay vì sử dụng hàm c time chúng ta sẽ sử dụng Từ chức năng Dấu thời gian và sẽ xây dựng một đối tượng ngày giờ. Ở đầ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 2018-01-08, 13:35:51.334072

Đây là mã

#
# Example file for working with o.s path module

import os
from os import path
import datetime
from datetime import date, time, timedelta
import time

def main():

    # Get the modification time
    t = time.ctime(path.getmtime("guru99.txt.bak"))
    print(t)
    print(datetime.datetime.fromtimestamp(path.getmtime("guru99.txt.bak")))

if __name__ == "__main__":
    main()

Tổng kết

  • Để tạo một bản sao của tệp hiện có bằng cách sử dụng mã im lặng.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 truy cập 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)