为什么在Python 3.4中使用path.name()会导致"TypeError: 'str' object is not callable"?

2 投票
2 回答
5976 浏览
提问于 2025-04-18 00:16

下面的代码是用来打印一个文件夹里所有文件的名字:

from pathlib import Path

for myPath in Path.cwd().iterdir():
    print (myPath.name())

但是我遇到了这个错误:

Traceback (most recent call last):
    File "NameTest.py", line 4, in <module>
        print (myPath.name())
TypeError: 'str' is not callable

如果我打印“myPath”这个对象的类型,发现文件夹里的所有内容都显示为class pathlib.windowspath。

我在Windows 8上使用的是Python 3.4,并且是在最新版本的Parallels中运行的。

2 个回答

0

@ David Maddox, 兄弟,我也犯了和你一样的错误。当我想用 pathlibPath() 来处理一个绝对路径,比如 'C:\\Users\\109_IR\\2023_06_15_09_43_53_078.jpg' 时,我也遇到了和你一样的错误提示。后来我发现,其实我们可以把像 'C:\\Users\\109_IR\\2023_06_15_09_43_53_078.jpg' 这样的 str 变量放进 Path() 里。导致我出错的原因是,我的代码前面有一个叫Path的变量。这就导致在调用 pathlibPath() 函数时出错。这显然是个简单的错误,希望其他人不要再犯和我一样的错误。

3

myPath.name 不能被调用,因为它是一个 属性,属于 str 类型。

你可以试试这个:

for myPath in Path.cwd().iterdir():
    print(myPath.name)

撰写回答