Как писать текстовые файлы внутри бесконечного цикла? - PullRequest
0 голосов
/ 27 июня 2019

Я пытаюсь создать цикл, который записывает в текстовый файл дату каждый раз, когда происходит событие. но я не могу заставить его работать, так как мне нужен бесконечный цикл для запуска программы. Если я поместил myfile.close () внутри цикла, даже внутри "if x [14] ==" track ":" я получу:

myfile.write(wri)
ValueError: I/O operation on closed file.

Однако, если я помещаю его вне цикла, файл не закрывается и ничего не записывается в выходной файл.

Вот код

while 1 :
    print("yes")
    response = requests.get('https://api.spotify.com/v1/me/player/currently-playing', headers=headers)
    soup2 = BeautifulSoup(response.text, "html.parser")
    x=re.findall('"([^"]*)"', str(soup2)) 

    if isinstance(x, list)==True:
        if len(x)>=15:
            print(x[14])


            if x[14]=="track":


                os.system("TASKKILL /IM spotify.exe")
                sleep(2)
                subprocess.Popen("C:/Users/nebbu/AppData/Roaming/Spotify/Spotify.exe")
                sleep(2)
                import pyautogui
                pyautogui.press("playpause")
                pyautogui.press("l")
                print(x)
                wri=str(date)+"- -"+str(x[13]+": "+str(x[14]))
                myfile.write(wri)


myfile.close()

Цикл никогда не заканчивается, я не знаю, должен ли он заканчиваться, чтобы закрыть файл, или есть ли другой способ сделать это.

1 Ответ

1 голос
/ 27 июня 2019

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

def f(dump):
    file = open('myfile.txt', 'a')
    file.write(dump)
    file.write('\n')
    file.close()

и передайте ему значения, которые вы хотите записать на лету.

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