Ошибка при записи в .txt
Программа выполняет первый цикл корректно, в файл записываются данные. Следующие повторения приводят к исключению.
InfoIP = [2.2, "b"]
path = r"C:\Users\User\Desktop\IPcheck.txt"
f = open(path, "a")
driver.get("https://web.telegram.org/z/#5024075764")
time.sleep(5)
def sendall():
try:
driver.execute_script('window.open("https://2ip.ru/")')
driver.switch_to.window(driver.window_handles[1])
time.sleep(3)
InfoIP[0] = driver.find_element(By.XPATH, '//*[@id="d_clip_button"]/span').text
InfoIP[1] = "-----------"
f.write("\n" + " ".join(InfoIP))
f.close()
except Exception:
print("Error2")
finally:
driver.close()
driver.switch_to.window(driver.window_handles[0])
time.sleep(5)
while True:
try:
sendall()
except Exception:
pass
Приводит к ошибке строка f.write("\n" + " ".join(InfoIP)) вне зависимости от значения. Без try:
(<class 'ValueError'>, ValueError('I/O operation on closed file.'),
<traceback object at 0x000001EAB4D9FE80>)
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
f = open(path, "a")
...
def sendall():
try:
...
f.write("\n" + " ".join(InfoIP))
f.close()
Вы открываете файл заранее, а потом закрываете его в функции. При повторном вызове функции файл уже закрыт. Открывайте файл там же, где осуществляете запись и лучше таким образом через менеджер контекста, чтобы он закрывался автоматически:
...
def sendall():
try:
...
with open(path, "a") as f:
f.write("\n" + " ".join(InfoIP))