Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 移动文件时出错_Python_File_Python 3.x - Fatal编程技术网

Python 移动文件时出错

Python 移动文件时出错,python,file,python-3.x,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,

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

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
>>> 
回溯(最近一次呼叫最后一次):
文件“C:/Users/Mike/Downloads/Video/Arrange.py”,第70行,在
系列(系列)
文件“C:/Users/Mike/Downloads/Video/Arrange.py”,第48行,串联
shutil.move(系列,'C:\\Users\\Mike\\Desktop\\Movies\\Series\\Lost\\s2\\)
文件“C:\Users\Mike\AppData\Local\Programs\Python\Python35\lib\shutil.py”,第536行,在move中
引发错误(“目标路径“%s”已存在”%realdst)
shutil.Error:目标路径“C:\Users\Mike\Desktop\Movies\Series\Lost\s2\Lost-s02e08(o2tvseries.com).mp4”已存在
>>> 

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

您遇到的错误是Windows平台特有的。您正在使用
shutil.move
,它在引擎盖下使用
os.rename
。发件人:

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