2016-06-30 43 views
1

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

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

您收到的错误是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)