如果文件已经在另一个目录中,则使用python复制该文件
我在一个目录和另一个目录中都有jpg文件。 我想将jpgs从目录C:/from/复制到目录C:/to/但仅当图像文件存在于from文件夹和to文件夹或to文件夹的子目录中时。如果图像不在“收件人”文件夹/子文件夹中,则不应复制该图像 这是我试过的。 首先,我从from文件夹创建了两个列表,其中包含每个文件的完整目录,另一个仅包含下面的文件名代码如果文件已经在另一个目录中,则使用python复制该文件,python,Python,我在一个目录和另一个目录中都有jpg文件。 我想将jpgs从目录C:/from/复制到目录C:/to/但仅当图像文件存在于from文件夹和to文件夹或to文件夹的子目录中时。如果图像不在“收件人”文件夹/子文件夹中,则不应复制该图像 这是我试过的。 首先,我从from文件夹创建了两个列表,其中包含每个文件的完整目录,另一个仅包含下面的文件名代码 import os import shutil fromDir = "C:/from/" toDir = "C:/to/" lstFolder = [
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提供的提示。我会试着看看我能做些什么,我不是一个程序员,正如你们很可能从我凌乱的代码中看到的那样。