Làm cách nào để sao chép tệp từ vị trí này sang vị trí khác bằng Python?

Để sao chép tệp từ vị trí này sang vị trí khác và đổi tên tệp trong thư mục đích, hãy sử dụng thư viện Shutil Python. shutil.copy(source, target) sao chép tệp source vào đường dẫn tệp được chỉ định bởi target

Cú pháp sử dụng Shutil. copy() chức năng là

import shutil

shutil.copy(source, target)

trong đó sourcetarget là đường dẫn tệp tuyệt đối hoặc tương đối

Trong ví dụ sau, chúng tôi sẽ sao chép tệp tại vị trí a/b/sample.txt đến c/d/new_sample.txt

Chương trình Python

import shutil

source = 'a/b/sample.txt'
target = 'c/d/new_sample.txt'

shutil.copy(source, target)

Tóm lược

Trong hướng dẫn về Ví dụ Python này, chúng ta đã học cách sao chép tệp từ vị trí này sang vị trí khác và đổi tên tệp trong khi sao chép đến đích

Sao chép tệp từ thư mục này sang thư mục khác là một kỹ năng cơ bản khi làm việc với các hoạt động khác nhau của Hệ điều hành. Nhiều ứng dụng yêu cầu sao chép tệp từ vị trí này sang vị trí khác. Với sự trợ giúp của tập lệnh python, rất dễ thực hiện việc này. Trong phát triển phần mềm và khoa học dữ liệu, có nhiều tình huống chúng ta cần sao lưu tệp

Với hai hoặc ba dòng mã, tệp có thể được sao chép vào bất kỳ vị trí nào. Trong số cả ba mô-đun, mô-đun os được sử dụng thường xuyên nhất và hiệu quả hơn so với các mô-đun khác

Nó sẽ sao chép tệp 'sample1. txt’ vào thư mục ‘/home/varung/test’ và trả về đường dẫn của tệp i mới tạo. e

/home/varung/test/sample1.txt

Một số điểm quan trọng

  • Nếu thư mục đích đã có một tệp có cùng tên thì nó sẽ bị ghi đè
  • Nếu không có thư mục có tên test bên trong /home/varung thì nó sẽ sao chép tệp nguồn bên trong /home/varun với tên test
  • Nếu đường dẫn đích không hợp lệ tôi. e. bất kỳ thư mục trung gian nào không tồn tại thì nó sẽ báo lỗi i. e
    • FileNotFoundError. [Errno 2] Không có tệp hoặc thư mục như vậy.  

Sao chép một tệp vào thư mục khác với tên mới

#Copy a file with new name
newPath = shutil.copy('sample1.txt', '/home/varung/test/sample2.txt')

Nó sẽ copy file file sample1. txt sang một vị trí khác có tên sample2. txt

Một số điểm quan trọng

  • Nếu tệp đích đã tồn tại thì nó sẽ bị ghi đè
  • Nếu đường dẫn đích không hợp lệ tôi. e. bất kỳ thư mục trung gian nào không tồn tại thì nó sẽ báo lỗi i. e
    • FileNotFoundError. [Errno 2] Không có tệp hoặc thư mục như vậy.  

Sao chép các liên kết tượng trưng bằng cách sử dụng Shutil. sao chép()

Giả sử chúng ta là một liên kết tượng trưng. csv trỏ đến mẫu. csv tôi. e

link.csv -> sample.csv

Hãy sao chép liên kết tượng trưng bằng cách sử dụng Shutil. bản sao () tôi. e

shutil.copy(src, dst, *, follow_symlinks=True)

Theo mặc định, follow_symlinks là True tôi. e. nó sẽ sao chép tệp đích được trỏ bởi liên kết nguồn tới giám đốc đích

Chúng ta sẽ xem xét một số tùy chọn khác nhau mà bạn có để di chuyển tệp xung quanh bằng Python. Ngoài ra còn có một ví dụ nhanh về cách bạn có thể sử dụng các thư viện shutil

import shutil

shutil.move(old_path, new_path)

Learn Data Science with

0 để dọn dẹp thư mục tải xuống của mình trong phần đầu tiên. Vì vậy, nếu bạn là người cần một thứ như thế trong đời, thì hãy tiếp tục đọc

lựa chọn 1. đóng cửa. di chuyển()

Ví dụ hiển thị trong phần giới thiệu sử dụng hàm

import shutil

shutil.move(old_path, new_path)

Learn Data Science with

1 từ thư viện shutil. Chức năng này thực hiện những gì bạn mong đợi và di chuyển các tệp từ vị trí này sang vị trí khác, như sau

import shutil

shutil.move(old_path, new_path)

Learn Data Science with

shutil.move() hoạt động bằng cách trước tiên tạo một bản sao của tệp với đường dẫn được xác định bởi

import shutil

shutil.move(old_path, new_path)

Learn Data Science with

4 và lưu trữ bản sao ở vị trí mới,
import shutil

shutil.move(old_path, new_path)

Learn Data Science with

5. Cuối cùng, sau khi tạo thành công bản sao, Python sẽ xóa tệp gốc có tại
import shutil

shutil.move(old_path, new_path)

Learn Data Science with

4

Trong trường hợp tệp gốc được bảo vệ, shutil.move() sẽ tạo một bản sao của tệp ở vị trí mới, nhưng Python sẽ không thể xóa tệp gốc

Hầu hết mọi người có các thư mục tải xuống khá lộn xộn. Vì vậy, hãy xem một ví dụ thực tế về cách chúng ta có thể sử dụng shutil.move() để lưu trữ tất cả các hình ảnh trong một thư mục tải xuống trong một thư mục mới có tên là

import shutil

shutil.move(old_path, new_path)

Learn Data Science with

9

import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

Chạy tập lệnh này bên trong thư mục tải xuống sẽ di chuyển bất kỳ tệp nào có phần mở rộng

import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

0 hoặc
import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

1 trong thư mục sang thư mục
import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

2. Sử dụng
import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

3 trả về danh sách tất cả các tệp trong thư mục. Sau đó, sử dụng
import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

4, thư mục
import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

2 được tạo. Sử dụng shutil.move(), sau đó Python có thể di chuyển tất cả các tệp trong danh sách
import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

7 của chúng tôi sang thư mục mới. Quá trình này được thể hiện trong sơ đồ dưới đây

Làm cách nào để sao chép tệp từ vị trí này sang vị trí khác bằng Python?

Có rất nhiều chỗ để cải thiện ở đây. Ví dụ: chúng tôi có thể nâng cấp khả năng hiểu danh sách của mình để bao gồm nhiều loại hình ảnh hơn. Chúng ta cũng nên viết mã trong nhánh

import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

8 để xem thư mục
import os
import shutil

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    shutil.move(image, new_path)

Learn Data Science with

2 có tồn tại trước khi chạy
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

0. Cũng không có lý do gì chúng tôi không thể mở rộng tập lệnh này để tạo các thư mục riêng cho tệp PDF, tệp thực thi và bất kỳ thứ gì khác nằm trong thư mục tải xuống của bạn.

Lựa chọn 2. hệ điều hành. đổi tên()

Thư viện

import shutil

shutil.move(old_path, new_path)

Learn Data Science with

0 cũng có một số tùy chọn để di chuyển tệp, một trong số đó là
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

2. Chức năng của
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

2 hơi khác một chút so với shutil.move()

Thay vì sao chép tệp được đề cập,

import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

5 thay đổi đường dẫn của tệp, tự động thay đổi vị trí tệp. Xem bên dưới để biết ví dụ về cách chúng tôi có thể áp dụng chức năng

import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

6 cũng được. Mặc dù chức năng được gọi là
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

7, nhưng nó cũng di chuyển các tệp bằng cách đổi tên chúng.
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

6 có thể được triển khai với một mẫu giống hệt với shutil.move()
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

2

import os

os.replace('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

Cả

import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

6 và
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

2 đều có thể được sử dụng để thay đổi tên tệp hoặc thư mục.
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

2 báo cáo lỗi khác nhau tùy thuộc vào hệ điều hành bạn đang chạy

Trong khi đó,

import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

6 sẽ báo cáo lỗi thống nhất trên các hệ thống khác nhau, đây có thể là lựa chọn tốt hơn khi làm việc trên một chương trình cần khả năng tương thích với các hệ điều hành khác nhau

Tùy chọn 3. đường dẫn. Đường dẫn(). đổi tên()

Đối với cách tiếp cận hướng đối tượng hơn để di chuyển tệp,

import os

os.replace('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

5 cũng là một tùy chọn

Bằng cách sử dụng hàm

import os

os.replace('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

6, Python tạo một đối tượng
import os

os.replace('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

7. Phương thức
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

5 sau đó thay đổi đường dẫn của đối tượng, tương tự như cách hoạt động của
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

2

import pathlib

pathlib.Path('old_directory/test_file.txt').rename('new_directory/test_file.txt')

Learn Data Science with

Chúng tôi cũng có thể áp dụng

import pathlib

pathlib.Path('old_directory/test_file.txt').rename('new_directory/test_file.txt')

Learn Data Science with

0 cho tập lệnh được tạo trước đó để di chuyển hình ảnh ra khỏi thư mục
import pathlib

pathlib.Path('old_directory/test_file.txt').rename('new_directory/test_file.txt')

Learn Data Science with

1 của chúng tôi. Xem bên dưới để biết ví dụ về điều này

import os
import pathlib

images = [f for f in os.listdir() if '.jpg' in f.lower()]

os.mkdir('downloaded_images')

for image in images:
    new_path = 'downloaded_images/' + image
    pathlib.Path(image).rename(new_path)

Learn Data Science with

Dưới đây là bảng so sánh sự khác biệt về tốc độ của ba cách tiếp cận

import shutil
import os
import pathlib

# Create anonymous functions - need to regenerate files after each move
def gen_file(file_name):
with open(f'old_directory/{file_name}', 'w') as f:
f.write('')

def shutil_move():
gen_file('shutil.txt')
shutil.move('old_directory/shutil.txt', 'new_directory/shutil.txt')

def os_move():
gen_file('os.txt')
os.rename('old_directory/os.txt', 'new_directory/os.txt')

def pathlib_move():
gen_file('pathlib.txt')
pathlib.Path('old_directory/pathlib.txt').rename('new_directory/pathlib.txt')

# Calculate timings
shutil_time = %timeit -o -q shutil_move()
os_time = %timeit -o -q os_move()
pathlib_time = %timeit -o -q pathlib_move()

import pandas as pd
# Create data table
data = [['shutil.move()', shutil_time.best], ['os.rename()', os_time.best],
['Pathlib.Path()', pathlib_time.best]]
df = pd.DataFrame(data, columns=['type', 'microseconds'])
df.microseconds = round(df.microseconds * 1e6, 2)
df.sort_values('microseconds', inplace=True)

df

Learn Data Science with

Ngoài

gõmicroseconds1os. đổi tên()50. 550shut. di chuyển()54. 582Pathlib. Đường dẫn()63. 74

Tóm lược

Bạn có một số tùy chọn khi di chuyển tệp xung quanh. shutil.move(),

import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

2 và
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

6 đều là những cách tiếp cận tuyệt vời, với cả ba cách tiếp cận đều sử dụng các lập luận
import pathlib

pathlib.Path('old_directory/test_file.txt').rename('new_directory/test_file.txt')

Learn Data Science with

5. Đối với cách tiếp cận hướng đối tượng hơn, bạn cũng có thể sử dụng
import pathlib

pathlib.Path('old_directory/test_file.txt').rename('new_directory/test_file.txt')

Learn Data Science with

0, cung cấp
import os

os.replace('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

6 với
import shutil

shutil.move(old_path, new_path)

Learn Data Science with

4 và
import os

os.rename('old_directory/test_file.txt', 'new_directory/test_file.txt')

Learn Data Science with

5 với
import shutil

shutil.move(old_path, new_path)

Learn Data Science with

5

Bắt đầu học miễn phí

Nhận thông tin cập nhật trong hộp thư đến của bạn

Tham gia cùng hơn 7.500 người học khoa học dữ liệu

Bài viết gần đây

Ưu đãi khóa học tốt nhất cho Thứ Sáu Đen và Thứ Hai Điện Tử 2022
Hàm sigmoid
chấm sản phẩm
7 khóa học về trí tuệ nhân tạo (AI) tốt nhất năm 2023


Nhận thông tin cập nhật trong hộp thư đến của bạn

Tham gia cùng hơn 7.500 người học khoa học dữ liệu

Gặp gỡ các tác giả

Làm cách nào để sao chép tệp từ vị trí này sang vị trí khác bằng Python?

Nhà khoa học dữ liệu Alfie Grace

Alfie tốt nghiệp Thạc sĩ Kỹ thuật Cơ khí tại Đại học College London. Anh ấy hiện đang làm Nhà khoa học dữ liệu tại Square Enix. Tìm anh ấy trên LinkedIn

Làm cách nào để sao chép tất cả các tệp từ thư mục này sang thư mục khác trong Python?

Bạn có thể sao chép nội dung của thư mục này sang thư mục khác bằng cách sử dụng Shutil. sao chép(), đóng cửa. copy2() và đóng cửa. các phương thức copytree() của mô-đun này

Làm cách nào để sao chép hình ảnh từ thư mục này sang thư mục khác trong Python?

Để sao chép các tập tin, bạn có thể sử dụng Shutil. sao chép(). Để tìm tất cả các tệp JPEG trong thư mục nguồn, bạn có thể sử dụng glob. iglob()

Làm thế nào bạn có thể sao chép tập tin và di chuyển đến một vị trí khác?

Phương pháp 1. Nhấp chuột phải Nhấp vào tên của tệp hoặc thư mục bạn muốn sao chép. Nhấp chuột phải vào tệp hoặc thư mục được đánh dấu và nhấp vào Sao chép. Chuyển đến thư mục đích, bấm chuột phải vào thư mục đích và bấm Dán.