Python 3 - 如果目标文件夹中不存在则复制文件

Python 3 - Copy files if they do not exist in destination folder

我正在尝试将几千个 pdf 从一个文件位置移动到另一个文件位置。源文件夹包含多个子文件夹,我只将 pdf(技术图纸)合并到一个文件夹中,以简化对我团队其他成员的搜索。

主要目标是仅复制目标文件夹中尚不存在的文件。我尝试了几个不同的选项,最近的选项如下所示,在所有情况下,每次都会复制每个文件。在今天之前,任何时候我尝试批量移动文件时,如果目标文件夹中存在该文件,我都会收到错误消息,但我不再这样做了。

我已确认某些文件存在于这两个位置,但仍在复制中。是否有我遗漏或可以修改以更正的内容?

感谢您的帮助。

import os.path
import shutil

source_folder = os.path.abspath(r'\source\file\location')

dest_folder = os.path.abspath(r'\dest\folder\location')

    for folder, subfolders, files in os.walk(source_folder):
        for file in files:
            path_file=os.path.join(folder, file)
            if os.path.exists(file) in os.walk(dest_folder):
                print(file+" exists.")
            if not os.path.exists(file) in os.walk(dest_folder):
                  print(file+' does not exist.')
                  shutil.copy2(path_file, dest_folder)

os.path.exists returns 一个布尔值。 os.walk 创建一个生成器,生成 (dirpath, dirnames, filenames) 形式的三元组。所以,第一个条件永远不会为真。

另外,即使那个条件是正确的,你的第二个条件也有冗余,因为它只是第一个条件的否定。您可以将其替换为 else.

你想要的是这样的

if file in os.listdir(dest_folder):
    ...
else:
    ...