2015-02-24 2 views
0

Я пытаюсь использовать sched для запуска tweetsearch, функция, которая принимает один аргумент, строку.Почему распад разрывает мои строки

s.enter(delaypercycle, 1, tweetsearch, "nike") 
s.run() 

Это возвращает «TypeError: tweetsearch() принимает ровно 1 аргумент (4 данных)». Изменение «nike» на «chicken» возвращает ту же ошибку, кроме как (7 данных).

Любая идея, как передать строку в расписание?

Пример кода, который дает ту же ошибку:

import sched, time 
s = sched.scheduler(time.time, time.sleep) 
def printword(word): 
    print word 
While True: 
    s.enter(1, 1, printword, "chicken") 
    s.run 
+0

Пожалуйста, добавьте минимальный рабочий пример. – ForceBru

ответ

1

Он принимает кортеж аргументов. Передача в одной строке заставляет ее использовать эту строку как итерабельную: каждый символ становится отдельным аргументом.

Попробуйте вместо этого передать кортеж: ("Nike",) (обратите внимание на запятую).

+0

Оба ответа решили мою проблему, но ваша работа помогла мне понять, почему строка разрывается. – Mark

0

Измените код следующим образом:

s.enter(delaypercycle, 1, tweetsearch, ("nike",)) 
s.run() 

sched пытался сделать tweetsearch(*"nike"), что эквивалентно tweetsearch('n', 'i', 'k', 'e').

Смежные вопросы