Hướng dẫn copy file trong python - sao chép tệp trong python

Phương pháp sao chép tệp trong Python

Python cung cấp các hàm dựng sẵn giúp việc sao chép các tệp trở nên dễ dàng hơn thông qua các tiện ích Shell của hệ điều hành.

Lệnh dưới đây đượ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 kèm theo thông tin của tệp [metadata]

shutil.copystat[src, dst]

Dưới đây là các bước để sao chép tệp trong Python

Bước 1] Trước khi chúng ta sao chép một tệp, chúng ta cần lấy đường dẫn tới tệp gốc trong thư mục hiện tại. Đoạn mã sau: Trước khi chúng ta sao chép một tệp, chúng ta cần lấy đường dẫn tới tệp gốc trong thư mục hiện tại. Đoạn mã sau:

  • Khai báo biến

  • Sử dụng hàm split với các biến

Giải thích mã nguồn

  • Đầu tiên chúng ta kiểm tra tệp "guru99.txt" có tồn tại hay không. Vì chúng ta đã tạo tệp guru99.txt trước đó, nên chúng ta biết rằng nó tồn tại và chúng ta có thể tiếp tục.

  • Chúng ta sẽ lưu đường dẫn của tệp ra biến "src", nếu file đó tồn tại."src", nếu file đó tồn tại.

  • Sau khi chúng ta lấy ra được đường dẫn, chúng ta sẽ phân tách đường dẫn và tên tệp.

  • Để làm điều này, chúng ta sẽ sử dụng hàm phân tách path.split với biến src.

  • Mã nguồn sau khi thực thi sẽ in riêng "file name" [tên tệp] và "file path" [tên đường dẫn]."file name" [tên tệp] và "file path" [tên đường dẫn].

Bước 2] Chúng ta sử dụng mô-đun Shutil để tạo một bản sao của tệp hiện có. Ở đây, chúng ta đã sử dụng để tạo một bản sao của tệp "guru99.txt." Chúng ta sử dụng mô-đun Shutil để tạo một bản sao của tệp hiện có. Ở đây, chúng ta đã sử dụng để tạo một bản sao của tệp "guru99.txt."

Giải thích mã nguồn

  • Đầu tiên chúng ta kiểm tra tệp "guru99.txt" có tồn tại hay không. Vì chúng ta đã tạo tệp guru99.txt trước đó, nên chúng ta biết rằng nó tồn tại và chúng ta có thể tiếp tục.

  • Chúng ta sẽ lưu đường dẫn của tệp ra biến "src", nếu file đó tồn tại.

  • Sau khi chúng ta lấy ra được đường dẫn, chúng ta sẽ phân tách đường dẫn và tên tệp.

Để làm điều này, chúng ta sẽ sử dụng hàm phân tách path.split với biến src. Hàm copy chỉ sao chép nội dung của tệp chứ không sao chép các thông tin khác của tệp. Để sao chép thông tin [meta-data] đi kèm với tệp, quyền cũng như các thông tin khác, bạn cần sử dụng hàm “copystat”. Trước khi chúng ta thực thi đoạn mã nguồn sau thì bạn hãy xóa file "guru99.txt.bak".

Mã nguồn sau khi thực thi sẽ in riêng "file name" [tên tệp] và "file path" [tên đường dẫn].quyền của tệp, thời gian sửa đổi và thông tin meta-data. Bạn có thể vào tệp mới được sao chép để xác minh thông tin.

Bước 2] Chúng ta sử dụng mô-đun Shutil để tạo một bản sao của tệp hiện có. Ở đây, chúng ta đã sử dụng để tạo một bản sao của tệp "guru99.txt."

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[]

Lấy tên tệp gốc "guru99.txt"và thêm chữ cái .bak ở cuối "guru99.txt.bak". Tên này với phần mở rộng .bak sẽ là bản sao của chúng ta. Bạn có thể in ra thông tin về thời gian tệp được sửa đổi lần cuối

  • Sau đó chúng ta sử dụng hàm tiện ích copy để sao chép từ vị trí nguồn tới vị trí đích.ctimecủa lớp time để chuyển đổi nó thành dạng dữ liệu đọc được. Sau khi mã nguồn được thực thi, chúng ta có thể thấy tập tin guru99.txt được sửa lần cuối vào Mon, Jan 8th at 13:35 2018.

  • Khi chạy mã nguồn, bạn sẽ thấy một tệp trùng lặp với đuôi file .bak  đã được tạo ra với nội dung tương tự tệp "guru99.txt".hàm trả về thời gian sửa đổi [path.getmtime[“guru99.txt”]]. Giờ thay vì dùng hàm ctime, chúng ta sẽ sử dụng hàm fromtimestamp và xây dựng một đối tượng datetime. Ở đầu ra, bạn sẽ thấy chi tiết về thời gian sửa đổi cuối cùng được in ra dưới định dạng khác 2018-01-08, 13:35:51.334072

Bước 3] Hàm copy chỉ sao chép nội dung của tệp chứ không sao chép các thông tin khác của tệp. Để sao chép thông tin [meta-data] đi kèm với tệp, quyền cũng như các thông tin khác, bạn cần sử dụng hàm “copystat”. Trước khi chúng ta thực thi đoạn mã nguồn sau thì bạn hãy xóa file "guru99.txt.bak".

#
# 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[]

Khi tệp "guru99.txt.bak" đã được xóa và chạy chương trình, nó sẽ tạo một bản sao của tệp .txt nhưng lần này với tất cả các thông tin như quyền của tệp, thời gian sửa đổi và thông tin meta-data. Bạn có thể vào tệp mới được sao chép để xác minh thông tin.

  • Dưới đây là mã nguồn của chương trình"shutil.copy [src, dst]".

  • Bước 4] Bạn có thể in ra thông tin về thời gian tệp được sửa đổi lần cuốiquyền, thời gian sửa đổi, thông tin meta-data của một tệp sang một tệp mới, chúng ta có thể sử dụng hàm "shutil.copystat [src, dst]".

Bài Viết Liên Quan

Chủ Đề