如果该文件已在另一个目录中,则使用python复制文件

时间:2014-06-29 16:22:37

标签: python

我在一个目录和另一个目录中有jpg文件。 我想将jpgs从目录“C:/ from /”复制到目录“C:/ to /”,但前提是图像文件存在于“from”文件夹和“to”文件夹中或子目录中“到”文件夹。如果图像不在“到”文件夹/子文件夹中,则不应复制

这是我尝试过的。 首先,我从“from”文件夹创建2个列表,其中包含每个文件的完整目录,另一个列表只包含文件名(下面的代码)。

import os
import shutil

fromDir = "C:/from/"
toDir = "C:/to/"
lstFolder = [] # create a empty list that will hold the full file path
lstFile = [] # create a empty list that will hold the file name only

for root, dirs, files in os.walk(fromDir):
    for file in files:
        if file.endswith(".jpg"):
        lstFolder.append(os.path.join(root, file))
        lstFile = [x.replace("C/from/","") for x in lstFolder]

这会给我一个像lstFolder == [“C:/from/cow.jpg”,“C:/from/sheep.jpg”,“C:/from/chicken.jpg”的列表。 > 和 lstFile == [ “cow.jpg”, “sheep.jpg”, “chicken.jpg”]

现在,如果“to”目录只有“cow.jpg”和“sheep.jpg”,则应复制“from”目录中的新图像。

现在我尝试在“to”文件夹中搜索lstFile中的jpg名称(下面的代码)。但现在我不知道下一步该做什么,我整天都被困住了。请帮忙。

lstTo = [] # a list that will hold all the file names that is in lstFile
for root, dirnames, filenames in os.walk(toDir):
    for jpgFile in lstFile:
        for filename in fnmatch.filter(filenames, jpgFile)
            lstTo.append(os.path.join(root, filename))

这将给我一个列表[“C:/to/beef/cow.jpg”,“C:/to/notbeef/sheep.jpg”]不包含文件“chicken.jpg”

现在我尝试了一些像下面的代码,但没有结果

for item in lstFile:
    shutil.copy2((x for x in lstFolder if item in x ),(y for y in lst2 if item in y ))

由于

0 个答案:

没有答案