2015-08-04 15 views
13

varolan değiştirin i shutil.Error: Destination path './dstFolder/file.txt' already exists nasıl alıyorum zaten dst folder varolan aynı komuta ve hareketli dosyayı yürütmek durumunda tek bir dosyayıTaşı ve aynı dosya adı zaten piton İşte

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) 

taşımak ve yerini alacak kodu altındadır hamleyi yapmak ve aynı dosya adı zaten

cevap

24

var olsaydı hedefe (sadece dizin) sonra shutil.move varolan herhangi bir dosya üzerine yazılır tam yolunu belirtirseniz yerine:

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

bu bir ağ sürücüsünde de çalışır, dosyaya tam bir yolum var, ancak "Dosya Varolan" ile çıkma, bu dosyadan çıkma, – user1767754

+0

@ user1767754 Kaynağın sembolik bir bağlantı olması durumunda olmasını beklerdim . Belki bir takip sorusu sorabilirdin? – ecatmur

+0

@ecatmur I aynı şeyi bağımsız olarak test etti. 1. eğer hedef dizin zaten kaynak dosya ismine sahipse ve '' shutil.move (src_filename, dst_dirname) 'yaparsanız, bir hata' Hata: Hedef yolu 'dst_dirname/src_filename' zaten var '' durumundadır. 2. Eğer dst_filename = os.path.join (dst_dirname, os.path.basename (src_filename)) yaparsanız; shutil.move (src_filename, dst_filename) '-> sonra bir istisna oluşturmazsınız. –