Сценарий Python не пишет окончательную запись - PullRequest
0 голосов
/ 04 октября 2018

Итак, я делаю бота Reddit, и он все работает, за исключением того, что идентификатор окончательного комментария (используемый для отслеживания того, где бот уже прокомментировал) не записывает окончательную запись.

Например, он написал6 из 7 идентификаторов в файл, но не напишу окончательный.Я очень плохо знаком с Python, поэтому я все еще учусь.

subreddit = reddit.subreddit('(thesubredditname)')
keyphrase = '!hayesfact'

for comment in subreddit.stream.comments():
    if keyphrase in comment.body:
        commentid = comment.id
        print(commentid)
        file = open('C:\\Users\\Desktop\\database.txt', "r")

    if commentid in file.read():
        print("already commented")
        file.close
    else:
        file = open('C:\\Users\\Desktop\\database.txt', "a")
        randomInt = randint(1,3)
        print(randomInt)
        file.write("\n" + commentid)
        file.close

        try:
            if randomInt == 1:                    
                comment.reply("Hayes was born on October 4, 1822!")                 
                print('posted and wrote to file')
            if randomInt == 2:
                comment.reply("Hayes signed legislation allowing women to argue before the supreme court!")                 
                print('posted and wrote to file')
            if randomInt == 3:
                comment.reply("Hayes won the electoral vote by only 1!")                 
                print('posted and wrote to file')                
        except:
            print('too frequent')

1 Ответ

0 голосов
/ 05 октября 2018

Основная проблема заключается в том, что вы не вызываете функцию file.close(), просто используете ее в качестве атрибута;добавьте parethesis для вызова функции, и это должно сбросить оставшуюся часть файла на диск.

Кроме того, в вашем коде есть несколько вещей, которые можно улучшить:

  • что происходит, если файл не открывается (когда if keyphrase in comment.body: равно False)?Вероятно, вы получите ошибку, потому что файл не будет открыт и вызов write() не удастся.
  • Вы не должны использовать голое предложение except:, потому что это затрудняет отладку;укажите все ошибки, которые вы пытаетесь поймать.
...