Sao chép () trong trăn

Tuy nhiên, có một vấn đề với việc sao chép danh sách theo cách này. Nếu bạn sửa đổi new_list, old_list cũng được sửa đổi. Đó là vì danh sách mới đang tham chiếu hoặc trỏ đến cùng một đối tượng old_list

old_list = [1, 2, 3]

# copy list using = new_list = old_list

# add an element to list new_list.append('a') print('New List:', new_list) print('Old List:', old_list)

đầu ra

Old List: [1, 2, 3, 'a'] New List: [1, 2, 3, 'a']

Tuy nhiên, nếu bạn muốn danh sách ban đầu không thay đổi khi danh sách mới được sửa đổi, bạn có thể sử dụng phương thức copy()

Python cung cấp các hàm sẵn có giúp 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 đính kèm theo thông tin của tệp (siêu dữ liệu)

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 đến tệp gốc trong thư mục hiện tại. Code after

  • 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 tôi đã tạo tệp guru99. txt trước đó, chúng ta nên 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 biến tệp ra "src", nếu tệp đó tồn tại

  • Sau khi chúng tôi lấy ra đường dẫn, chúng tôi 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 đường dẫn phân tách hàm. split with src biến

  • Mã nguồn sau khi thực thi sẽ ở riêng "tên tệp" (tên tệp) và "đường dẫn tệp" (tên đường dẫn)

Bước 2) Chúng ta 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 "guru99. txt. "

Giải thích mã nguồn

  • Lấy tên tệp gốc "guru99. txt"và thêm chữ cái. bak at the end "guru99. txt. nướng". This name with extension extension. bak will be the copy of them ta

  • Sau đó, chúng tôi sử dụng chức năng sao chép tiện ích để sao chép từ vị trí nguồn đến vị trí đích

  • Khi chạy mã nguồn, bạn sẽ thấy một tệp trùng lặp với tệp đuôi. bak  đã được tạo ra với nội dung tương tự tệp "guru99. txt"

Bước 3) Hàm sao chép 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 đó, bạn hãy xóa file "guru99. txt. nướng"

Khi tệp "guru99. txt. bak" đã bị xóa và đang 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 siêu dữ liệu. 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

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) Bạn có thể ra thông tin về tệp thời gian đã được sửa đổi lần cuối

  • Dòng lệnh 15 Trả về thứ, ngày, tháng, năm và thời gian tệp. txt (guru99) được sửa lần cuối. Chúng ta sử dụng đường dẫn mô-đun để lấy chi tiết thời gian đã sửa đổi tệp, và sau đó chúng ta sử dụng hàm ctime của lớp thời gian để chuyển đổi nó thành định dạng dữ liệu đã đọc được. Sau khi mã nguồn được thực thi, chúng ta có thể tìm thấy tập tin guru99. txt được sửa lần cuối vào Thứ Hai, ngày 8 tháng 1 lúc 13. 35 2018

  • Dòng lệnh 17 thực hiện cùng một nhiệm vụ trong thời gian sửa đổi của tệp, nhưng được biểu diễn bên dưới một định dạng khác. Ở đây chúng ta sử dụng hàm trả về thời gian sửa đổi (đường dẫn. getmtime(“guru99. txt”)). Giờ thay vì sử 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 ở định dạng khác 2018-01-08, 13. 35. 51. 334072

Dưới đây là mã nguồn

# # 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 bản sao của tệp hiện có, chúng ta có thể sử dụng hàm "shutil. sao chép (src, dst)"

  • Để sao chép tất cả thông tin như quyền, thời gian sửa đổi, thông tin siêu dữ liệu của tệp sang tệp mới, chúng tôi có thể sử dụng hàm "shutil. sao chép (src, dst)"

Chủ đề