问题描述
我正在尝试通过提供文件名列表(其给定类型为error)将某些特定文件从一个文件夹复制到另一个文件夹,在此代码中我错了
import os
from os import path
import shutil
src = "D:/folder2"
dst = "D:/folder1"
files = [i for i in os.listdir(src) if ('7809.txt','988876.txt') in i and path.isfile(path.join(src,i))]
for f in files:
shutil.copy(path.join(src,f),dst)
解决方法
您必须更改操作数的顺序:
files = [i for i in os.listdir(src)
if i in ('7809.txt','988876.txt')
and path.isfile(path.join(src,i))]
没有必要进行ispath()
检查:除非您做的很奇怪,否则"{src}/7809.txt"
已经是文件,而不是目录或其他东西。因此,您可以使用集合交集而不是列表理解:
files = set(os.listdir(src)) & {'7809.txt','988876.txt'}