2015-08-04 16 views
13

Đây là bên dưới mã mà sẽ di chuyển và thay thế tập tin cá nhânDi chuyển và thay thế nếu tên tập tin tương tự đã tồn tại trong python

import shutil 
import os 
src = 'scrFolder' 
dst = './dstFolder/' 
filelist = [] 

files = os.listdir(src) 
for filename in files: 
filelist.append(filename) 
fullpath = src + '/' + filename 
shutil.move(fullpath, dst) 

Nếu tôi thực hiện cùng một lệnh và tập tin di chuyển mà đã tồn tại trong dst folder tôi đang nhận được shutil.Error: Destination path './dstFolder/file.txt' already exists cách để làm di chuyển và thay thế nếu tên cùng một tập tin đã tồn tại

Trả lời

24

Nếu bạn chỉ định đường dẫn đầy đủ đến đích (không chỉ thư mục) sau đó shutil.move sẽ ghi đè lên bất kỳ tập tin hiện có:

shutil.move(os.path.join(src, filename), os.path.join(dst, filename)) 
+3

hoạt động tốt trên ổ đĩa mạng, tôi có đường dẫn đầy đủ đến tệp nhưng không ghi đè, thoát với "Tệp tồn tại" – user1767754

+0

@ user1767754 Tôi chỉ mong đợi điều đó xảy ra nếu nguồn là liên kết tượng trưng . Có lẽ bạn có thể hỏi một câu hỏi tiếp theo? – ecatmur

+0

@ecatmur Tôi đã kiểm tra một cách độc lập điều tương tự. 1. nếu thư mục đích có tên tập tin nguồn đã có và bạn làm 'shutil.move (src_filename, dst_dirname)' một lỗi được nêu ra 'Lỗi: Đường dẫn đích 'dst_dirname/src_filename' đã tồn tại'. 2. BAO GIỜ nếu bạn làm 'dst_filename = os.path.join (dst_dirname, os.path.basename (src_filename)); shutil.move (src_filename, dst_filename) '-> thì bạn không bị ngoại lệ. –

Các vấn đề liên quan