python-3.x - 如何处理这个 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)
解决方案
您必须更改操作数的顺序:
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'}
推荐阅读
- reactjs - 如何在反应中将多个值传递给我的函数?
- scala - 如何在scala中读取CSV文件
- server - 原生移动应用的 OAuth 2.0 授权码授权 + PKCE
- javascript - 如何在 HTML 和 Javascript 的动态列表中显示格式化的 HTML 文本
- javascript - 如何在打字稿中实现具有多个匿名函数的接口
- javascript - Chart.js 图表不显示(引导程序)
- javascript - jQuery onload 代码如何可重用于缩略图 2 和 3
- scala - 如何有效地获取数据帧记录大小的最大长度
- c# - 如何使着色器(统一)与特定强度的灯光交互?
- xcode - 从 Xcode 到 Visual Studio 的自动生成的出口更改为 NSObject