【问题标题】:Error when moving files移动文件时出错
【发布时间】:2016-06-30 10:48:18
【问题描述】:

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

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
>>> 

但文件实际上会移动。如何移动文件而不会每次都出现此错误?

【问题讨论】:

    标签: python file python-3.x


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2011-12-28
      • 2011-12-23
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2021-09-17
      相关资源
      最近更新 更多