Как открыть большой файл Twitter (30GB +) в Python? - PullRequest
0 голосов
/ 05 декабря 2018

Мне интересно, каков правильный сценарий для открытия больших файлов Twitter, передаваемых с помощью tweepy на python 3. Я использовал следующее с небольшими файлами, но теперь, когда мой сбор данных превышает 30 ГБ + я получаю ошибки памяти:

with open('data.txt') as f:
    tweetStream = f.read().splitlines()

tweet = json.loads(tweetStream[0])
print(tweet['text'])
print(tweet['user']['screen_name'])

Мне не удалось найти то, что мне нужно в Интернете, поэтому любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 05 декабря 2018

Не пытайтесь создать объект, который содержит весь файл.Вместо этого, поскольку каждая строка содержит твит, работайте с файлом по одной строке за раз:

with open('data.txt') as f:
    for line in f:
        tweet = json.loads(line)
        print(tweet['text'])
        print(tweet['user']['screen_name'])

Возможно, сохраните соответствующие твиты в другом файле или базе данных или создайте потрясающую сводку.Например:

total = 0
about_badgers = 0
with open('data.txt') as f:
    for line in f:
        tweet = json.loads(line)
        total +=1
        if "badger" in tweet['text'].lower():
            about_badgers += 1

print("Of " + str(total) +", " + str(about_badgers) +" were about badgers.")

Ошибки перехвата, связанные с неразборчивыми строками, например:

with open('data.txt') as f:
    for line in f:
        try:
            tweet = json.loads(line)
            print(tweet['text'])
         except json.decoder.JSONDecodeError:
            # Do something useful, like write the failing line to an error log
            pass

        print(tweet['user']['screen_name'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...