os.path.join()只接受一个参数(给出了2个)

3
我遇到了Python错误:TypeError:join()需要恰好一个参数(给定2个),出现在set_Xpress方法的第139行,该方法如下所示:
from os import path
from json import load
...
    def set_Xpress(Xpress_number, special_ts, disk, platform, testcase):
        ...
        with open("{0}:\\BBT2\\Configuration\\temporary.tmp".format(disk), "r") as test_conf_file_r:
            test_conf_vocab = load(test_conf_file_r)
        report = path.join(test_conf_vocab["report_dir"], test_conf_vocab["report_name"])
        ...

请帮我理解是什么原因导致了这个问题。Python shell可以正常执行,而且在另一个使用此临时文件的方法中也可以成功执行相同的操作。提前感谢您的帮助。


为确保准确性,请导入os并将其用作os.path.join - Lipis
@Lipis 我会告诉你结果的。但真的很奇怪,它在一个地方可以工作,在另一个地方却不行。我的意思是那些导入。 - antontama
3
您似乎相信导入出了一些问题。如果导入工作正常,您不会收到 "ImportError" 的错误消息,但是如果您在代码的错误位置意外设置了 "path = '/some/path/here'",那么您会得到与您收到的错误消息完全相同的结果。在 "report = path.join..." 行的前面添加 "print(path)" 并查看它是什么。 - DSM
@DSM 是的,谢谢您的理解,您发现了我的错误。已经修复并关闭了线程。非常感谢大家。我会继续改进。 - antontama
3个回答

20

path 不是 os.path 模块,它是一个字符串。你在某处重新定义了它。

from os import path  # path is a module, path.join takes many arguments

...

path = '/some/path'  # path is now a string, path.join is a totally
                     # different method, takes a single iterable
...

report = path.join(one, two)   # TypeError, str.join takes one argument

1

os.path.join()可以接受任意数量的参数。你确定你的path.join实际上在调用os.path.join吗?


0

绝对 os.path.join() 接受多个参数,就像那个说你肯定重新定义了路径并将其存储为字符串的人一样,所以要小心。虽然我确实这样做了,经过长时间的搜索和尝试,我找到了我的错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接