2013-04-26 6 views
3

я получаю сообщение об ошибке Python: TypeError: Join() занимает ровно один аргумент (2 дано) в строке 139, метод set_Xpress, который выглядит следующим образом:os.path.join() занимает ровно один аргумент (2 дано)

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 выполняет ее без проблем, и один и тот же ход выполняется отлично в другом методе с этим файлом tmp. Заранее спасибо.

+0

Просто, чтобы быть уверенным. 'Import os' и использовать его как' os.path.join' – Lipis

+0

@Lipis, я расскажу вам о результатах. Хотя действительно странно, что он работает на одном месте, а не в другом. Я имею в виду те импорты, которые у меня есть. – antontama

+3

@antontama: Кажется, вы уверены, что импорт по какой-то причине не работает. Сообщение об ошибке, которое вы получаете, является именно тем, что произойдет, если импорт будет работать очень хорошо (в конце концов, вы не получили «ImportError»), но вы случайно установили «path =»/some/path/here'' в неправильном месте в вашем коде. Прямо перед строкой 'report = path.join ...' добавьте 'print (path)' и посмотрите, что это такое. – DSM

ответ

16

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 
+0

Извините, сообщение не было ясно о разделе моего импорта. Ред. – antontama

+2

@antontama это не только об импорте, но и о том, что происходит между ними. – Lipis

+0

@ pavel-anossov спасибо, это было действительно полезно. – antontama

1

os.path.join() принимает любое количество аргументов. Вы уверены, что ваш path.join на самом деле звонит os.path.join?

0

Абсолютно os.path.join() принимает столько же аргументов, сколько тот, кто сказал, что вы определенно переопределили путь как новую переменную и сохранили в виде строки, поэтому будьте осторожны. Хотя я сделал это абсолютно и после долгого поиска и испытания я нашел свою ошибку.