移动文件时出错

时间:2016-06-30 10:48:18

标签: python file python-3.x

我正在尝试编写一个代码,将我的下载文件夹中的文件移动到其他指定的文件夹但我不断收到错误。这是我的代码。

import os
import shutil
series = []
for i in os.listdir('C:\\Users\\Mike\\Downloads\\Video'):
    if ('.mp4') in i:
        series.append(i)

for j in series:
    if 'Thrones' in j:
        shutil.move(j,'C:\\Users\\Mike\\Desktop\\')

我一直收到此错误

Traceback (most recent call last):
File "C:/Users/Mike/Downloads/Video/Arrange.py", line 70, in <module>
Series(series)
File "C:/Users/Mike/Downloads/Video/Arrange.py", line 48, in Series
shutil.move(serie, 'C:\\Users\\Mike\\Desktop\\Movies\\Series\\Lost\\s2\\')
File "C:\Users\Mike\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 536, in move
raise Error("Destination path '%s' already exists" % real_dst)
shutil.Error: Destination path 'C:\Users\Mike\Desktop\Movies\Series\Lost\s2\lost - s02e08 (o2tvseries.com).mp4' already exists
>>> 

但文件确实在移动。如何在不每次都出现此错误的情况下移动文件?

1 个答案:

答案 0 :(得分:2)

您获得的错误是特定于Windows平台的。您正在使用shutil.move,其中使用了os.rename。来自docs

  

在Windows上,如果dst已经存在,即使它是文件

,也会引发OSError

您可以在移动文件之前检查文件是否存在于目标中,具体取决于您希望实现的目标:

1)不要覆盖目的地,只需从源中删除文件
2)首先从源中删除文件并覆盖目标

您可以在下面找到解决方案2)的实现

import os

for name in series:
    if 'Thrones' in name:
        if not os.path.isfile(name):
            shutil.move(name, 'C:\\Users\\Mike\\Desktop\\')
        else:
            os.remove(name)