首页 > 解决方案 > 如何处理这个 TypeError: 'in' 需要字符串作为左操作数,而不是元组

问题描述

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

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)

标签: python-3.xpandasnumpyshutil

解决方案


您必须更改操作数的顺序:

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

推荐阅读