Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/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 - Fatal编程技术网

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

如果文件已经在另一个目录中,则使用python复制该文件,python,Python,我在一个目录和另一个目录中都有jpg文件。 我想将jpgs从目录C:/from/复制到目录C:/to/但仅当图像文件存在于from文件夹和to文件夹或to文件夹的子目录中时。如果图像不在“收件人”文件夹/子文件夹中,则不应复制该图像 这是我试过的。 首先,我从from文件夹创建了两个列表,其中包含每个文件的完整目录,另一个仅包含下面的文件名代码 import os import shutil fromDir = "C:/from/" toDir = "C:/to/" lstFolder = [

我在一个目录和另一个目录中都有jpg文件。 我想将jpgs从目录C:/from/复制到目录C:/to/但仅当图像文件存在于from文件夹和to文件夹或to文件夹的子目录中时。如果图像不在“收件人”文件夹/子文件夹中,则不应复制该图像

这是我试过的。 首先,我从from文件夹创建了两个列表,其中包含每个文件的完整目录,另一个仅包含下面的文件名代码

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文件夹中搜索下面lstFilecode中的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 ))

谢谢

只是一些简单的想法:1不要每次都在最里面的循环中创建lstFile。2个集合可能是更合适的数据类型,然后您可以只执行copyList=lstFile.intersectionlstToCool。感谢Jasper提供的提示。我会试着看看我能做些什么,我不是一个程序员,正如你们很可能从我凌乱的代码中看到的那样。