Python报错TypeError: 'str'对象不可调用,求定位解决
问题求助:TypeError: 'str' object is not callable 解决方法
我刚开始学习编程,谷歌搜索后以为问题是和Python预定义名称冲突的变量需要重命名,但找不到对应的变量。以下是我的代码和报错信息,试过重命名文件、路径前加'r'/'f'、路径末尾加{file}等方法都没用,求帮忙:
我的代码
import os import pandas as pd lista_arquivo = os.listdir(fr"C:\Users\Master\Desktop\cursos\projetos\PYTHON\Faturamento_AM") print(lista_arquivo) tabela_total = pd.DataFrame() for arquivo in lista_arquivo: if "abril.xlsx" in arquivo(): tabela = pd.read_excel(fr"C:\Users\Master\Desktop\cursos\projetos\PYTHON\Faturamento_AM\{arquivo}") tabela_total = tabela_total.append(tabela) print(arquivo) print(tabela_total) tabela_faturamento = tabela_total.groupby('Faturamento').sum() print(tabela_faturamento)
报错信息
TypeError: 'str' object is not callable
解决方案
你的问题和预定义名称冲突无关,是代码里的语法错误:
- 循环里的
arquivo()是错误写法,arquivo是字符串类型的文件名,不需要加括号调用。把if "abril.xlsx" in arquivo()改成if "abril.xlsx" in arquivo即可。
另外补充两个实用提示:
pd.DataFrame.append()已被官方弃用,建议用pd.concat([tabela_total, tabela], ignore_index=True)替代,避免后续Python版本升级后报错。- 路径拼接更推荐用
os.path.join(),比如os.path.join(r"C:\Users\Master\Desktop\cursos\projetos\PYTHON\Faturamento_AM", arquivo),写法更规范且跨系统兼容性更好。
修改后的代码示例:
import os import pandas as pd caminho_pasta = r"C:\Users\Master\Desktop\cursos\projetos\PYTHON\Faturamento_AM" lista_arquivo = os.listdir(caminho_pasta) print(lista_arquivo) tabela_total = pd.DataFrame() for arquivo in lista_arquivo: if "abril.xlsx" in arquivo: caminho_arquivo = os.path.join(caminho_pasta, arquivo) tabela = pd.read_excel(caminho_arquivo) tabela_total = pd.concat([tabela_total, tabela], ignore_index=True) print(arquivo) print(tabela_total) tabela_faturamento = tabela_total.groupby('Faturamento').sum() print(tabela_faturamento)
内容的提问来源于stack exchange,提问作者Alyssa Moreira
相关产品推荐
相关产品推荐

