2017-07-16 68 views
0

すべてのjpgファイルをソースからターゲットに移動するためのコードがあります。初めてコードが正常に動作し、ファイルを移動しますが、再度実行すると、ファイルが既に存在するというエラーが発生します。ここでディレクトリが既に存在する場合はshutil.move

Traceback (most recent call last): 
    File "/Users/tom/Downloads/direc.py", line 16, in <module> 
    shutil.move(jpg, dst_pics) 
    File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/shutil.py", line 542, in move 
    raise Error("Destination path '%s' already exists" % real_dst) 
shutil.Error: Destination path '/Users/tom/Downloads/Dest/Pictures/Photo3.jpg' already exists 

は私のコード

import os 
import glob 
import shutil 

local_src = '/Users/tom/Downloads/' 
destination = 'Dest' 

src = local_src + destination 
dst_pics = src + '/Pictures/' 

print(dst_pics) 

for pic in glob.iglob(os.path.join(src, "*.jpg")): 
    if os.path.isfile(pic): 
     if not (os.path.isfile(dst_pics + pic)): 
      shutil.move(pic, dst_pics) 
     else: 
      print("File exists") 

が、私はそれがファイルが存在するかどうかを確認するために、ファイルや小切手を上書きし、それをスキップすることができます何かできることはありますか?

私はそれを@Justas Gの解決法で解決することができました。ここで

が解決

for pic in glob.iglob(os.path.join(src, "*.jpg")): 
    if os.path.isfile(pic): 
     shutil.copy2(pic, dst_pics) 
     os.remove(pic) 
+0

ずつ移動し、私はすでにその解決策を試してみましたが、それはうまくいかなかった。完全パスを使用した後もファイルを上書きしません。 –

+0

'os.path.exists(dir):'チェックを行い、 'shutil.rmtree(dir)'が存在する場合は 'shutil.rmtree(dir)'を実行しようとしましたか?その時点で、そのパスに書き込むことができるはずです。 pathlibモジュールを使用して同様のアクションを実行できます。 – idjaw

答えて

1

使用コピー、移動のinstedされ、それがその後の進路は、元のファイルを削除する必要が自動的に

shutil.copy(sourcePath, destinationPath)

ファイルを上書きする必要があります。 shutil.copyはディレクトリをコピーまたは作成しないので、それらが存在することを確認する必要があります。

、これはどちらか動作しない場合は、手動でファイルが存在する場合は、チェックし、それを削除し、新しいファイルを移動することができます。そのファイルをチェックするには

を、使用することを存在:

from pathlib import Path my_file = Path("/path/to/file")

if my_file.exists():へパスに何かが存在することを確認してください。

if my_file.is_file():は、ファイルがそのすべての内容は、使用してディレクトリを削除するには

が存在するかどうかを確認するために: shutil.rmtree(path)

それとも os.remove(path)を持つ単一のファイルを削除してから、それらを1

+0

私はあなたの指示に従って問題を解決することができました。上記の私の編集を参照してください。 –

+0

おかげさまで^^ –

関連する問題