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:
...
我正在尝试将几千个 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:
...