Bản sao đùa giỡn của poton
Trong hướng dẫn Python này, bạn sẽ học cách sử dụng các hàm khác nhau có sẵn trong các mô-đun os, Shutil và subprocess để sao chép tệp và thư mục từ vị trí này sang vị trí khác Show
Sau khi đọc bài viết này, bạn sẽ học được. -
Mục lụcCác bước để sao chép tệp trong PythonPython cung cấp hỗ trợ mạnh mẽ cho việc xử lý tệp. Chúng tôi có thể sao chép một và nhiều tệp bằng các phương pháp khác nhau và phương pháp được sử dụng phổ biến nhất là phương pháp 4. Các bước dưới đây cho biết cách sao chép tệp từ thư mục này sang thư mục khác
ví dụ. Sao chép một tệpTrong ví dụ này, chúng tôi đang sao chép lợi nhuận. txt từ thư mục báo cáo vào thư mục tài khoản
Sao chép tất cả các tệp từ một thư mụcĐôi khi chúng tôi muốn sao chép tất cả các tệp từ thư mục này sang thư mục khác. Thực hiện theo các bước dưới đây để sao chép tất cả các tệp từ một thư mục
thí dụ
đầu ra _______0_______Sao chép toàn bộ thư mụcĐôi khi chúng ta cần sao chép toàn bộ thư mục, bao gồm tất cả các tệp và thư mục con chứa trong đó. Sử dụng phương pháp _______12_______5 của mô-đun Shutil để sao chép thư mục theo cách đệ quy
thí dụ. Hãy xem cách sao chép thư mục báo cáo và tất cả nội dung của nó vào thư mục tài khoản
Mô-đun trò đùa sau đó Sao chép tệpMô-đun đóng cửa Python cung cấp nhiều chức năng cao cấp để thực hiện sao chép và xóa tệp Các chức năng này cung cấp một cách sao chép tệp được tối ưu hóa và do đó tiết kiệm thời gian thực hiện tác vụ mở, đọc, ghi và đóng tệp không cần thiết khi không có yêu cầu xử lý trong tệp đó Mô-đun Shutil cung cấp bốn chức năng sau để sao chép tệp Chức năng Mô tả 1Sao chép đối tượng tệp từ nguồn tới đích. (Cần mở cả đường dẫn nguồn và đích) 2Sao chép nội dung của tệp này sang tệp khác. Siêu dữ liệu của tệp sẽ không được sao chép. 4sao chép nội dung của tệp nguồn vào tệp đích cùng với siêu dữ liệu. 4sao chép siêu dữ liệu bổ sung cụ thể là dấu thời gian của tệp nguồn vào đíchshutil phương pháp sao chépĐể quyết định sử dụng chức năng nào để sao chép tệp, chúng ta phải xem xét các điểm sau
Phương pháp _______26_______2Phương thức copyfile() được sử dụng để sao chép nội dung của tệp này sang tệp khác. Siêu dữ liệu của tệp sẽ không được sao chép ________26______
ghi chú. Siêu dữ liệu của tệp sẽ không được sao chép khi sử dụng phương pháp này thí dụ ________37______Mã của chúng tôi đã sao chép 'lợi nhuận. txt' trong thư mục đích. Đây là danh sách các tệp có trong thư mục đích
Sử dụng hàm 9 để liệt kê tất cả các tệp có trong thư mục đích để xác minh kết quảSau đây là những điểm quan trọng
Để tránh các lỗi trên, hãy luôn bọc mã của bạn trong khối thử-ngoại trừ. Tham khảo ví dụ sau ________41______đầu ra ________42______Phương pháp _______2_______4Mô-đun 3 có thêm một phương thức để sao chép tệp gọi là phương thức copied expense.txt copied profit.txt copied revenue.txt8 sẽ sao chép nội dung của tệp nguồn sang tệp đích Tương tự như phương pháp 5, phương pháp này sẽ đưa ra ' 1' nếu nguồn và đích trỏ đến cùng một tệpXem xét ví dụ sau khi chúng tôi cố gắng sao chép tệp 'profit. txt' từ nguồn 1 đến thư mục đích 2 0Ghi chú. Nếu tệp nguồn không được tìm thấy ở vị trí đó thì phương thức copy() không thể được thực thi và một 9 sẽ xuất hiện. Nếu thư mục đích không thể ghi thì ‘_ 0‘ sẽ được nâng lêncopy() so với copyfiles()Trong khi các phương thức copied expense.txt copied profit.txt copied revenue.txt8 và 5 trong mô-đun Shutil hoạt động giống nhau trong việc sao chép tệp từ vị trí này sang vị trí khác, có một số khác biệt đáng kể giữa chúngNếu đường dẫn đích là 'tệp' hoặc 'thư mục' thì phương thức copied expense.txt copied profit.txt copied revenue.txt8 sẽ tạo một tệp theo tên của tệp nguồn
Phương thức copied expense.txt copied profit.txt copied revenue.txt8 gọi 5 và Destination folder before copying:: ['expense.txt', 'revenue.txt'] Destination after copying ['expense.txt', 'profit.txt', 'revenue.txt']0 bên trong triển khai nội bộ của nó. Nhưng 7() chỉ gọi 1 bên trong quá trình triển khai của nóPhương pháp _______26_______4Trong 3 có thêm một phương pháp gọi là copied expense.txt copied profit.txt copied revenue.txt9 có thể được sử dụng để sao chép tệp từ vị trí này sang vị trí khác 1Trong khi các phương pháp copied expense.txt copied profit.txt copied revenue.txt8 và copied expense.txt copied profit.txt copied revenue.txt9 đều sao chép nội dung của tệp cùng với siêu dữ liệu, có hai sự khác biệt đáng kể giữa hai phương pháp này
Các kịch bản mà phương thức này ném ra 'SameFileError' tương tự như phương thức copy(). Chúng ta có thể xem cách sử dụng phương pháp này để sao chép tệp có tên 'Sample. txt' từ nguồn đến đích 2đầu ra 3Phương pháp _______26_______1Phương thức _______2_______1 được sử dụng để sao chép đối tượng tệp từ vị trí nguồn đến vị trí đích Ngoài vị trí nguồn và đích, chúng ta có thể chuyển kích thước bộ đệm, cho biết phần tệp cần được sao chép. Giá trị mặc định cho điều này là 16 KB 4
Hãy để chúng tôi xem một ví dụ để kiếm lợi nhuận. txt từ thư mục báo cáo vào thư mục tài khoản thí dụ 5Sao chép tệp bằng mô-đun hệ điều hànhMô-đun hệ điều hành Python cung cấp các chức năng có thể tương tác trong các hệ điều hành khác nhau. Chúng tôi phải sử dụng các lệnh sao chép cơ bản dành riêng cho hệ điều hành cụ thể. Các phương pháp có thể di động trên các hệ điều hành khác nhau Sao chép tệp bằng phương pháp shutil.copy(src, dst, *, follow_symlinks=True)9Phương thức _______18_______00 mở một đường ống để thực thi một lệnh mà chúng ta truyền vào đối tượng tệp. Phương thức này mở một đối tượng tệp ở chế độ đọc hoặc ghi. Đọc là một chế độ mặc định 6
Lệnh shell cơ bản để sao chép là 2 đối với windows và 3 đối với môi trường UNIXHãy cho chúng tôi xem cách sử dụng phương pháp này để sao chép một tệp có tên là lợi nhuận. txt từ thư mục nguồn sang thư mục đích Trên Unix 7Trên Windows 8Sao chép tệp bằng phương pháp import os import shutil source_folder = r"E:\demos\files\reports\\" destination_folder = r"E:\demos\files\account\\" # fetch all files for file_name in os.listdir(source_folder): # construct full file path source = source_folder + file_name destination = destination_folder + file_name # copy only files if os.path.isfile(source): shutil.copy(source, destination) print('copied', file_name)07Phương thức system() một lần nữa được sử dụng để thực thi tập lệnh trong shell hoặc lệnh OS. Giá trị trả về là trạng thái thoát của lệnh
10. Lấy lệnh đối số duy nhất là lệnh shell bên dưới sẽ được thực thiHãy cho chúng tôi xem cách sử dụng phương pháp này để sao chép một tệp có tên là mẫu. txt từ thư mục nguồn sang thư mục đích _______0_______0Mô-đun quy trình con để sao chép tệpMô-đun quy trình con được sử dụng để thực thi/khởi chạy một quy trình con mới từ ứng dụng của chúng tôi, kết nối với các đường ống đầu vào/đầu ra/lỗi của chúng và lấy mã trả về của chúng. Mô-đun này dự định thay thế một số mô-đun và chức năng cũ hơn _______0_______1Phương pháp _______18_______11Phương thức này có thể được sử dụng để thực thi bất kỳ lệnh nào được truyền dưới dạng đối số cho phương thức này và giá trị trả về sẽ là trạng thái kết thúc của lệnh đã được thực thi _______0_______2
đầu ra _______0_______4Sao chép tệp bằng phương pháp import os import shutil source_folder = r"E:\demos\files\reports\\" destination_folder = r"E:\demos\files\account\\" # fetch all files for file_name in os.listdir(source_folder): # construct full file path source = source_folder + file_name destination = destination_folder + file_name # copy only files if os.path.isfile(source): shutil.copy(source, destination) print('copied', file_name)17Phương thức _______18_______18 một lần nữa được sử dụng để thực thi các lệnh bên ngoài và nắm bắt đầu ra của nó. Điều này rất giống với phương pháp 19 với một tập hợp các đối số tương tự_______0_______5 20. Nếu giá trị này là _ 21 thì tất cả các kết thúc dòng sẽ được chuyển đổi thành 22 như được mô tả đối với đối số chế độ xuống dòng phổ quát 23 thành _ 24
Sự khác biệt giữa các hàm Shutil copy() và Shutil copy2() là gì?Sự khác biệt giữa Copyfile và sao chép trong Python đóng cửa là gì?copy() vs copyfile() -
. copy() sẽ sao chép một tệp nếu đích là một thư mục trong khi copyfile() sẽ không thành công với lỗi 13. The copy() also sets the permission bits while copying the contents whereas the copyfile() only copies the data. The copy() will copy a file if the destination is a directory whereas the copyfile() will fail with error 13.
Sự khác biệt giữa bản sao và bản sao2 là gì?bản sao() so với bản sao2()
. Phương thức copy() gọi nội bộ copyfile() và copymode() trong khi copy2() thay thế lệnh gọi copymode() bằng copystat(). The copy() only sets permission bits whereas copy2() also updates the file metadata with timestamps. The copy() method calls copyfile() and copymode() internally whereas copy2() replaces the call to copymode() with copystat().
Cách tốt nhất để sao chép tệp trong Python là gì?Các bước sao chép tệp bằng Python . Tìm đường dẫn của một tập tin. Chúng ta có thể sao chép một tệp bằng cả đường dẫn tương đối và đường dẫn tuyệt đối. . Bộ ria te nói đùa. chức năng sao chép (). . sử dụng hệ điều hành. listdir() và Shutil copy() để sao chép tất cả các tập tin. . Sử dụng hàm copytree() để sao chép toàn bộ thư mục |