Python TypeError: object不可迭代



我仍然是python的新手,我必须创建一个方法来读取一些txt文件,并为每个文件返回一个特定列的值列表。

我尝试创建一个包含所有我必须读取的文件的数组,并将其作为参数发送给我的方法。

import json, requests, urllib.parse, re
from pandas.io.parsers import read_csv
import pandas as pd
from termcolor import colored
import numpy as np
from glob import glob
import os

# Set Up
dateinplay = "2021-09-27"
cdwenv1 = "cdwu"  # Note that it only works with the http version right now
cdwenv2 = "cdwp"  # Control Env, usually cdwp
CoreMurexFilesLoc = r"J:GerardRelease197UATFilesCore"
# Dev Static
cdwenv = ""  # leave empty
files = glob(CoreMurexFilesLoc + "\*")
# index 1: MHEU_TradeCash_ | 2: TradeCash_
tradeCashfiles = [i for i in files if "TradeCash" in i]
# index 1: MHEU_Trade_ | 2: Trade_
tradeFiles = [i for i in files if "Trade_" in i]
mheu_tradeCash = tradeCashfiles[1]
tradeCash = tradeCashfiles[2]
mheu_trade = tradeFiles[1]
trade = tradeFiles[2]
filesList = [mheu_trade, trade, mheu_tradeCash, tradeCash]

def read_csv(input: list):
for file in list:
df_trade = pd.read_csv(
file,
delimiter="|",
index_col=False,
dtype="unicode",
)
# Drop any blank fields
df_trade.dropna(subset=["MurexCounterpartyRef"], inplace=True)
tradeList = df_trade["MurexCounterpartyRef"]
return tradeList

read_csv(filesList)

但是我得到了一个不可迭代的对象错误,我不明白为什么我不能在这个列表上交互。

Traceback (most recent call last):
File "h:DESKTOPtest_checkultimateParent.py", line 50, in <module>
read_csv(filesList)
File "h:DESKTOPtest_checkultimateParent.py", line 35, in read_csv
for file in list:
TypeError: 'type' object is not iterable

如果有人能帮我找出并解决这个错误,我将不胜感激。

这是因为你试图迭代python的内置派生数据类型,即'list'。
根据我的理解,试着用'Input'代替'list'

def read_csv(myInput: list):
for file in myInput:
df_trade = pd.read_csv(
file,
delimiter="|",
index_col=False,
dtype="unicode",
)
# Drop any blank fields
df_trade.dropna(subset=["MurexCounterpartyRef"], inplace=True)
tradeList = df_trade["MurexCounterpartyRef"]
return tradeList

也许你在函数里面写了'list'而不是'input'。

注:通常避免使用python的保留字(这里是'input'),因为它们会导致歧义,在最坏的情况下,会导致运行时错误。

相关内容

最新更新