当前位置: 首页 > 知识库问答 >
问题:

如何修复“TypeError:'str'对象不可调用”?

司寇善
2023-03-14

环境:

Python 3.7

Windows 10 64位

问题:

下面这段代码过去工作没有问题。我不得不移动我的Py魅力项目的文件夹,现在我得到了这个错误消息:“TypeError:'str'对象不可调用”。

守则:

import os    
import psutil    

mypid = os.getpid()
print(f"PID of Program: {mypid}")
PROCNAME = "Program.exe"
for proc in psutil.process_iter():
    print(f"proc : {proc} - Type: {type(proc)}")
    print(f"proc.name : {proc.name} - Type: {type(proc.name)}")
    print(f"PROCNAME : {PROCNAME} - Type: {type(PROCNAME)}")
    print(f"proc.pid : {proc.pid} - Type: {type(proc.pid)}")
    print(f"mypid : {mypid} - Type: {type(mypid)}")
    if proc.name() == PROCNAME and proc.pid != mypid:  # < ====== Line 15 where is the error
        print(f"Program will kill this process : {proc}")
        proc.kill()

错误输出:

PID of Program: 4176
proc : psutil.Process(pid=0, name='System Idle Process') - Type: <class 'psutil.Process'>
proc.name : System Idle Process - Type: <class 'str'>
PROCNAME : Program.exe - Type: <class 'str'>
proc.pid : 0 - Type: <class 'int'>
mypid : 4176 - Type: <class 'int'>
Traceback (most recent call last):
  File "E:/CFF Dropbox/Gauthier Buttez/cff/Python/PhoneBot_0002/test1.py", line 15, in <module>
    if proc.name() == PROCNAME and proc.pid != mypid:
TypeError: 'str' object is not callable

我尝试的是:

我在一个空白的python文档中隔离了这段代码。我想确保这个问题没有连接到其他地方的代码。当我执行这段独立的代码时,我得到了同样的问题。

我在这里看到了关于“TypeError:‘str’object不可调用”的类似问题,但所有的答案都是针对问题代码的,这无助于我理解问题。

我做错了什么。如您所见,我打印了每个变量的值和类型,并将字符串与字符串、int与int进行比较。问题是什么?我不明白。你能帮帮我吗?

共有1个答案

郭翰墨
2023-03-14
proc.name()

proc.name是字符串,而不是方法。使用proc.name访问它,不带括号。

作为一个经验法则,当你面对一个***对象是不可调用的错误时,你应该寻找一组错位的(...)

 类似资料:
  • 问题内容: 码: 第一次工作,然后第二次出现错误: 有人知道为什么是这样吗? 我已经尝试过了,但出现错误: 问题答案: 这就是问题: 你正在重新定义什么意思。是字符串类型的内置Python名称,你不想更改它。 为本地变量使用其他名称,然后删除该语句。

  • 问题内容: 我正在尝试编写一个程序,该程序允许您输入班级中的学生人数,然后为每个学生输入3个测试成绩以计算平均值。我是编程新手,但会不断收到错误消息,我不了解它的含义或解决方法。这是我到目前为止所拥有的: 问题答案: 当你写 您的意图是“运行这段代码时间,我刚才输入的值在哪里”。但是在Python,你传递给事情一个声明需求是某种迭代对象的。在这种情况下,您想要的只是一个statement。这将生成

  • 问题内容: 我有以下代码 当我运行它时,我得到了: 这是为什么?怎么修? 问题答案: 将变量称为。它掩盖了内置功能。

  • 我有一个简单的脚本: 但是,每当我尝试运行脚本时,Python都会引发一个错误: 这个错误是什么意思?为什么我会得到它?我怎样才能修复它?

  • 我可以从一个简单的脚本成功加载TextBlob模块,但不能从Flask应用程序加载。我将向您展示代码和错误。 加载一个简单的脚本工作: 从烧瓶应用程序加载时抛出错误: 错误: 我使用的是textblob版本0.11。0与pip一起安装。

  • 问题内容: 为什么会出现此错误?我很困惑。 你需要知道什么才能回答我的问题? 问题答案: 是一个包含的模块。 你需要执行以下操作: 这就是错误消息的含义: 它表示为,因为你的代码正在调用模块对象。模块对象是导入模块时得到的东西的类型。你试图做的是在模块对象中调用恰好与包含它的模块同名的类对象。 这是一种从逻辑上分解这种错误的方法: “ 告诉我我的代码试图调用无法调用的内容。我的代码试图调用什么?”