Нужна помощь в преобразовании данных твитов в текстовый файл JSON - PullRequest
0 голосов
/ 14 сентября 2018

Я работаю над проектом, в котором мне нужно запросить данные Twitter API. Я довольно новичок и застреваю, записывая все данные в текстовый файл в формате json.

У меня большой файл с большим количеством пропущенных твиттер-данных. Я использую идентификаторы твитов для запроса данных из API Twitter. Пока мой код работает, я могу видеть данные твита, заполняющие текстовый файл. Тем не менее, после того, как мой код завершен, у меня есть пустой документ с данными для одного твита.

Я полагаю, что проблема, вероятно, заключается в том, как я строю свои «открытые» заявления. Тем не менее, я не уверен, что я делаю неправильно. Кто-нибудь видит, что я делаю не так?

Спасибо!

tweet_file = 'tweet_json.txt'
list_id = (twitter_archive['tweet_id'])
with open(os.path.join(os.getcwd(), tweet_file), mode = 'w') as f:
    for id in list_id:
        try:
            tweet = api.get_status(id, tweet_mode='extended')
            json.dump(tweet._json, f, indent = 4)
            f.write('\n')
        except tweepy.TweepError:
            print("tweet # " + str(id) + " not found")
    with open(os.path.join(os.getcwd(), tweet_file), mode = 'w') as f: 
        json.dump(tweet._json, f, indent = 4)

1 Ответ

0 голосов
/ 14 сентября 2018

Открытие файла в режиме "w" усекает файл, стирая все, что было в нем ранее.

Когда вы открываете файл во второй раз, он стирает все, что вы записали в файл внутри цикла for. Затем он записывает содержимое объекта tweet в файл. Вот почему вы видите только один твит в своем выводе.

Блоки

with не требуют каких-либо заключительных операторов. Это типично для блочных структур в Python. Блок with выполнит свою очистку самостоятельно, когда программа выйдет из секции с отступом.

Если вы удалите две последние строки вашей программы, то все твиты должны правильно появиться в вашем выходном файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...