Скрипт не может записать .txt файл. Pythonanywhere - PullRequest
1 голос
/ 30 июня 2019

У меня есть простой скрипт для регистрации целей счетчиков яндекс.метрики. Он пишет, когда цель была создана или удалена в текстовый файл. Код для записи в текстовый файл:

if cID == 18662179:
     with open('toyota_goalss_log.txt','a') as log2:
         print(str(datetime.date.today()) +str(res2), file = log2)
         print(str(datetime.date.today()) +str(res2),cID)
         log2.close()

Сценарий запускается правильно, если я нажимаю кнопку «выполнить» в редакторе на pythonanywhere: ошибок нет, данные добавляются в текстовые файлы. Но если я создаю задачу для запуска этого сценария каждый час, данные не добавляются в текстовые файлы ... и в журнале задач или журнале ошибок также нет ошибок. Что я сделал не так?

Еще код:

#!/usr/bin/python3.6
import requests
import datetime
from pprint import pprint
import time
def goalsS():
    token = 'AQAAAAAFKNk4AAPquxxxxxxxxx'
    headers = {'Authorization': 'OAuth ' + token}
    countersDict = {18662179:'site.ru', 901167:'site.ru'}
    counterIds = [18662179, 901167]
    for cID in counterIds:
        names = []
        ng=[]
        url = "https://api-metrika.yandex.net/management/v1/counter/"+str(cID)+"/goals"
        r = requests.get(url, headers=headers)
        res = r.json()['goals']

        for i in res:
            ng.append(str(i['id'])+": "+ i['name']+'|')
            names.append(i['name'])

        goalsDict = dict(zip(ng,names))
        clear = str(ng).replace('[','').replace(']','').replace("'",'').replace(',','')
        with open(str(cID)+'goals_log.log','a') as log:
            print(clear, file =  log)
            log.close()
        li = []
        f = open(str(cID)+'goals_log.log', 'r')
        for line in f:
            line = set(line.rstrip("\n").split('|'))
            li.append(line)

        res2 = li[-1] - li[-2]
        if res2 == set():
            res2 = li[-2]-li[-1]
            print(res2,'set')
            if res2 == set():
                pass
            else:
                if cID == 18662179:
                    with open('toyota_goalss_log.txt','a') as log2:
                        print(str(datetime.date.today()) + ' ' + 'Удалили цель(и)'+' '+str(res2).replace(',','').replace('{','').replace('}',''),file = log2)
                    print(str(datetime.date.today()) + ' ' + 'Удалили цель\цели'+' '+str(res2),cID)
                    log2.close()
    else:
        if cID == 18662179:
                with open('toyota_goalss_log.txt','a') as log2:
                    print(str(datetime.date.today()) + ' ' + 'Создали цель(и)'+' '+str(res2).replace(',','').replace('{','').replace('}',''),file = log2)
                    print(str(datetime.date.today()) + ' ' + 'Создали цель\цели'+' '+str(res2),cID)
                    log2.close()

if __name__ == '__main__':
        goalsS()

1 Ответ

0 голосов
/ 30 июня 2019

Использовать абсолютный путь к файлу.

with open('/path/to/file','a') as log2:
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...