How to handle this TypeError: 'in <string>' requires string as left operand, not tuple

How to handle this TypeError: 'in <string>' requires string as left operand, not tuple

我正在尝试通过提供文件名列表将一些特定文件从一个文件夹复制到另一个文件夹,它给出类型错误,我在这段代码中错了

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'}