Получение ошибки в моем коде TypeError: требуется байтовый объект, а не 'str'

avatar
ADITYA RAJAK
8 апреля 2018 в 04:49
2979
1
-1

Я плохо разбираюсь в Python, пожалуйста, помогите мне. Я не могу загрузить твиты, которые создает CSV-файл, но он пуст. Я не могу получить данные твитов на него! Вывод показывает, что твиты загружаются, но данные, я думаю, не принимают строковый формат! Пожалуйста, помогите!

import tweepy 
import csv


def get_all_tweets(screen_name):       
    auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_key, access_secret)
    api = tweepy.API(auth)                
    alltweets = []            

    new_tweets = api.user_timeline(screen_name = screen_name,count=200)                
    alltweets.extend(new_tweets)                
    oldest = alltweets[-1].id - 1

    while len(new_tweets) > 0:
        print ("getting tweets before %s" % (oldest))

        new_tweets = api.user_timeline(screen_name = screen_name,count=200,max_id=oldest)

        alltweets.extend(new_tweets)                        
        oldest = alltweets[-1].id - 1            
        print ("...%s tweets downloaded so far" % (len(alltweets)))

    outtweets = [[tweet.id_str, tweet.created_at, tweet.text.encode("utf-8"),tweet.retweet_count,tweet.favorite_count] for tweet in alltweets]

    with open('%s_tweets.csv' % screen_name, 'wb') as f:
        writer = csv.writer(f)            
        writer.writerow(["id", "created_at", "text", "retweet_count", "favorite_count"])
        writer.writerows(outtweets)        
    pass

if __name__ == '__main__':        
    get_all_tweets("Iamrajakaditya")

Ошибка, которую я получаю в приведенном выше коде:

writer.writerow(["id","created_at","text","retweet_count","favorite_count"])
TypeError: требуется байтовый объект, а не 'str'

Источник
DYZ
8 апреля 2018 в 04:51
3

Включите в свой вопрос сообщение об ошибке complete.

user202729
8 апреля 2018 в 04:51
0

Вы хотите преобразовать str в bytes?

DYZ
8 апреля 2018 в 04:52
0

Кроме того, оператор pass ровно ничего не делает. Тебе это не нужно.

user202729
8 апреля 2018 в 04:53
0

Возможный обман.

ADITYA RAJAK
8 апреля 2018 в 04:55
0

@ user202729 да!

Ответы (1)

avatar
DYZ
8 апреля 2018 в 04:55
2

Не открывать файл CSV в двоичном режиме.

with open('%s_tweets.csv' % screen_name, 'wb') as f:

должен быть:

with open('%s_tweets.csv' % screen_name, 'w') as f: