我有我使用所有的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)
我已經試過了解決方案,但它沒有工作。即使使用完整路徑後,它也不會覆蓋該文件。 –
你嘗試做一個'如果os.path.exists(DIR):'檢查,然後'shutil.rmtree(DIR)'如果它的存在?此時你應該可以寫入該路徑。您可以使用pathlib模塊執行類似的操作。 – idjaw