繁体   English   中英

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返回一个布尔值。 os.walk创建一个生成器,该生成器生成(dirpath, dirnames, filenames)形式的三元组。 因此,第一个条件永远不会为真。

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

你想要的是类似的东西

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM