Hướng dẫn os system copy file python - sao chép tập tin hệ thống os python

Giới thiệu

Khi nói đến việc sử dụng Python để sao chép các tệp, có hai cách chính: sử dụng mô -đun

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
7 hoặc mô -đun
import shutil

shutil.copyfile('file1.txt', 'file2.txt')
8. Tất cả các phương thức
import shutil

shutil.copyfile('file1.txt', 'file2.txt')
8 chúng tôi hiển thị ở đây là các phương thức cho phép chúng tôi thực thi các lệnh shell từ mã python của chúng tôi, chúng tôi sẽ sử dụng để thực thi lệnh
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
0 (windows) hoặc lệnh
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
1 (UNIX).

Bạn sẽ nhận thấy rằng nhiều trong số các phương pháp này, trong cả mô -đun

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
7 và mô -đun
import shutil

shutil.copyfile('file1.txt', 'file2.txt')
8, có chức năng rất giống nhau (không đáng ngạc nhiên), nhưng Tốt.

Sao chép các tệp với mô -đun Shutil

Mô -đun SHOTIL cung cấp một số phương thức cấp cao để sao chép các tệp. Dưới đây là những cái chính:

copyfile

Phương thức này sao chép nội dung của một tệp vào tệp khác. Điểm đến được cung cấp cho nó phải là một tệp có thể ghi và có một tên khác với tệp nguồn. Nếu tên giống nhau thì nó sẽ tạo ra lỗi. Nếu tệp đích đã tồn tại, nó sẽ được thay thế bằng tệp mới được sao chép.

Cú pháp cho phương pháp này là:

shutil.copyfile(src_file, dest_file, *, follow_symlinks=True)

Ví dụ: mã sau sẽ sao chép một tệp có tên "file1.txt" vào một tệp có tên "file2.txt":

import shutil

shutil.copyfile('file1.txt', 'file2.txt')

Một tính năng thú vị và có khả năng hữu ích của

shutil.copy(src_file, dest_file, *, follow_symlinks=True)
4 là đối số boolean
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
5. Nếu nó được đặt thành
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
6 và tệp nguồn là một liên kết tượng trưng, ​​thì thay vì sao chép tệp, một liên kết tượng trưng mới sẽ được tạo.

sao chép

Phương pháp này rất giống với

shutil.copy(src_file, dest_file, *, follow_symlinks=True)
7, với sự khác biệt chính là ngoài việc sao chép nội dung của tệp nguồn, nó đi thêm một bước và cũng sao chép các quyền của hệ thống tệp. Sao chép quyền của tệp không phải là một nhiệm vụ tầm thường trong hầu hết các ngôn ngữ lập trình, vì vậy đây là một tính năng tốt để có.

Cú pháp như sau:

shutil.copy(src_file, dest_file, *, follow_symlinks=True)

Mỗi tham số này giống như trong phương thức

shutil.copy(src_file, dest_file, *, follow_symlinks=True)
7. Ví dụ: mã sau sẽ sao chép "file1.txt" vào "file3.txt".

import shutil

shutil.copy('file1.txt', 'file3.txt')

Lưu ý: Đảm bảo bạn không đặt tên cho tập lệnh của mình giống như một trong những mô -đun bạn đang nhập (điều mà tôi đã làm nhầm khi kiểm tra mã cho bài viết này). Nếu bạn làm như vậy, thì bạn sẽ gặp lỗi khi cố gắng nhập mô -đun đó do sự cố nhập hình tròn.: Make sure you don't name your script the same as one of the module you're importing (which I mistakenly did when testing code for this article). If you do, then you'll get an error when trying to import that module due to a circular import problem.

copy2

Như với các phương thức trước đó, phương thức

shutil.copy(src_file, dest_file, *, follow_symlinks=True)
9 giống hệt với phương thức
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
0, nhưng ngoài việc sao chép nội dung tệp, nó cũng cố gắng bảo tồn tất cả các siêu dữ liệu của tệp nguồn. Nếu nền tảng không cho phép tiết kiệm siêu dữ liệu đầy đủ, thì
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
9 không trả lại lỗi và nó sẽ chỉ bảo tồn bất kỳ siêu dữ liệu nào mà nó có thể.

Cú pháp như sau:

Mỗi tham số này giống như trong phương thức
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
7. Ví dụ: mã sau sẽ sao chép "file1.txt" vào "file3.txt".

Lưu ý: Đảm bảo bạn không đặt tên cho tập lệnh của mình giống như một trong những mô -đun bạn đang nhập (điều mà tôi đã làm nhầm khi kiểm tra mã cho bài viết này). Nếu bạn làm như vậy, thì bạn sẽ gặp lỗi khi cố gắng nhập mô -đun đó do sự cố nhập hình tròn.

Như với các phương thức trước đó, phương thức

shutil.copy(src_file, dest_file, *, follow_symlinks=True)
9 giống hệt với phương thức
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
0, nhưng ngoài việc sao chép nội dung tệp, nó cũng cố gắng bảo tồn tất cả các siêu dữ liệu của tệp nguồn. Nếu nền tảng không cho phép tiết kiệm siêu dữ liệu đầy đủ, thì
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
9 không trả lại lỗi và nó sẽ chỉ bảo tồn bất kỳ siêu dữ liệu nào mà nó có thể.

import shutil

shutil.copy2('file1.txt', 'file4.txt')
$ python copy-files.py 
$ ls -l
total 32
-rw-r--r--  1 scott  staff  91 Oct 27 11:26 copy-files.py
-rw-r--r--  1 scott  staff   6 Oct 27 11:27 file1.txt
-rw-r--r--  1 scott  staff   6 Oct 27 11:29 file3.txt
-rw-r--r--  1 scott  staff   6 Oct 27 11:27 file4.txt

shutil.copy2(src_file, dest_file, *, follow_symlinks=True)

Một lần nữa, các tham số này giống như trong các lệnh trước mà chúng tôi đã đề cập cho đến nay.

Ví dụ: mã sau sẽ sao chép "file1.txt" vào "file4.txt", cũng như bảo tồn siêu dữ liệu của tệp gốc, "file1.txt".

Cú pháp như sau:

shutil.copyfileobj(src_file_object, dest_file_object[, length])

Mỗi tham số này giống như trong phương thức

shutil.copy(src_file, dest_file, *, follow_symlinks=True)
7. Ví dụ: mã sau sẽ sao chép "file1.txt" vào "file3.txt".

Lưu ý: Đảm bảo bạn không đặt tên cho tập lệnh của mình giống như một trong những mô -đun bạn đang nhập (điều mà tôi đã làm nhầm khi kiểm tra mã cho bài viết này). Nếu bạn làm như vậy, thì bạn sẽ gặp lỗi khi cố gắng nhập mô -đun đó do sự cố nhập hình tròn.

Như với các phương thức trước đó, phương thức

shutil.copy(src_file, dest_file, *, follow_symlinks=True)
9 giống hệt với phương thức
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
0, nhưng ngoài việc sao chép nội dung tệp, nó cũng cố gắng bảo tồn tất cả các siêu dữ liệu của tệp nguồn. Nếu nền tảng không cho phép tiết kiệm siêu dữ liệu đầy đủ, thì
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
9 không trả lại lỗi và nó sẽ chỉ bảo tồn bất kỳ siêu dữ liệu nào mà nó có thể.

import shutil

filename1 = 'file1.txt'
fileA = open(filename1, 'rb')

filename2 = 'file5.txt'
fileB = open(filename2, 'wb')

shutil.copyfileobj(fileA, fileB)

shutil.copy2(src_file, dest_file, *, follow_symlinks=True)

Một lần nữa, các tham số này giống như trong các lệnh trước mà chúng tôi đã đề cập cho đến nay.

Ví dụ: mã sau sẽ sao chép "file1.txt" vào "file4.txt", cũng như bảo tồn siêu dữ liệu của tệp gốc, "file1.txt".

Popen

Phương pháp này mở một đường ống đến hoặc từ lệnh của bạn. Tuy nhiên, lưu ý rằng phương pháp này đã không được chấp nhận trong Python 2.6, vì vậy chúng tôi không khuyên bạn nên sử dụng nó trừ khi bạn phải làm. Thay vào đó, tài liệu Python khuyên chúng tôi nên sử dụng các phương thức từ mô -đun phụ.

Cú pháp như sau:

os.popen(cmd[, mode[, bufsize]])

Ở đây giá trị được trả về là một đối tượng tệp được kết nối với đường ống. Đối tượng này có thể được đọc từ hoặc viết vào tùy thuộc vào chế độ. Chế độ mặc định là 'r', cho phép đọc nội dung tệp.

Ví dụ dưới đây sẽ sao chép "file1.txt" vào "file6.txt":

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
0

Chạy lệnh theo cách này hoàn toàn giống như khi bạn chạy nó trực tiếp từ dòng lệnh của thiết bị đầu cuối của bạn.

hệ thống

Phương thức này thực thi lệnh được chỉ định trong một vỏ bọc. Nó có sẵn cho cả Unix và Windows. Cú pháp như sau:

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
1

Ở đây

import shutil

shutil.copy('file1.txt', 'file3.txt')
5 là một chuỗi chứa lệnh shell dos hoặc unix shell. Trong trường hợp của chúng tôi, đây là nơi chúng tôi sẽ đặt lệnh
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
0 hoặc
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
1.

Ví dụ: mã sau sẽ sao chép "file1.txt" vào "file7.txt"

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
2

Điều này trông giống hệt với lệnh

import shutil

shutil.copy('file1.txt', 'file3.txt')
8 trước đó mà chúng tôi vừa sử dụng, nhưng lệnh được thực thi trong một vỏ bọc, điều đó có nghĩa là nó được thực thi trong một luồng riêng biệt song song với mã thực thi của bạn. Để chờ hoàn thành, bạn cần gọi
import shutil

shutil.copy('file1.txt', 'file3.txt')
9 trên đối tượng được trả về bởi
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
0.

Sao chép các tệp với mô -đun phụ

Mô -đun phụ dự định thay thế một số phương thức trong mô -đun

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
8 (đặc biệt là các phương thức
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
0 và
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
3) và nó trình bày hai phương thức chính để truy cập các lệnh hệ điều hành. Các phương pháp này là
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
4 và
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
5. Một lần nữa, đối với các hệ thống Unix, lệnh "Sao chép File1.TXT File2.txt" nên được thay thế bằng "CP File1.TXT File2.txt".

Phương thức gọi

Tài liệu Python khuyến nghị chúng tôi sử dụng phương thức

shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
4 để khởi chạy lệnh từ hệ điều hành.

Cú pháp như sau:

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
3

Ở đây giá trị được trả về là một đối tượng tệp được kết nối với đường ống. Đối tượng này có thể được đọc từ hoặc viết vào tùy thuộc vào chế độ. Chế độ mặc định là 'r', cho phép đọc nội dung tệp.

Ví dụ dưới đây sẽ sao chép "file1.txt" vào "file6.txt":

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
4

Chạy lệnh theo cách này hoàn toàn giống như khi bạn chạy nó trực tiếp từ dòng lệnh của thiết bị đầu cuối của bạn.

hệ thống

Phương thức này thực thi lệnh được chỉ định trong một vỏ bọc. Nó có sẵn cho cả Unix và Windows. Cú pháp như sau:

Ở đây

import shutil

shutil.copy('file1.txt', 'file3.txt')
5 là một chuỗi chứa lệnh shell dos hoặc unix shell. Trong trường hợp của chúng tôi, đây là nơi chúng tôi sẽ đặt lệnh
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
0 hoặc
shutil.copy(src_file, dest_file, *, follow_symlinks=True)
1.

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
5

Ví dụ: mã sau sẽ sao chép "file1.txt" vào "file7.txt"

Điều này trông giống hệt với lệnh

import shutil

shutil.copy('file1.txt', 'file3.txt')
8 trước đó mà chúng tôi vừa sử dụng, nhưng lệnh được thực thi trong một vỏ bọc, điều đó có nghĩa là nó được thực thi trong một luồng riêng biệt song song với mã thực thi của bạn. Để chờ hoàn thành, bạn cần gọi
import shutil

shutil.copy('file1.txt', 'file3.txt')
9 trên đối tượng được trả về bởi
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
0.

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
6

Sao chép các tệp với mô -đun phụ

Phương thức gọi

Tài liệu Python khuyến nghị chúng tôi sử dụng phương thức

shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
4 để khởi chạy lệnh từ hệ điều hành.

Tham số

shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
7 sẽ bao gồm lệnh shell của chúng tôi. Tuy nhiên, một lời cảnh báo, vì tài liệu Python cảnh báo chúng tôi rằng sử dụng
shutil.copy2(src_file, dest_file, *, follow_symlinks=True)
8 có thể là một rủi ro bảo mật.

Sự khác biệt giữa SHOWIL COPY () và SOWLIL COPPREE () là gì?

Trong khi Sould.Copy () sẽ sao chép một tệp duy nhất, SOWN.CopyTree () sẽ sao chép toàn bộ thư mục và mọi thư mục và tệp có trong đó.shutil. copy() will copy a single file, shutil. copytree() will copy an entire folder and every folder and file contained in it.

Tàu con thoi là gì trong Python?

Mô-đun SHOTIL cung cấp một số hoạt động cấp cao trên các tệp và bộ sưu tập tệp.Cụ thể, các chức năng được cung cấp hỗ trợ sao chép và xóa tệp.Đối với các hoạt động trên các tệp riêng lẻ, xem thêm mô -đun HĐH.. In particular, functions are provided which support file copying and removal. For operations on individual files, see also the os module.