异常后如何 return 到我的循环?
How can I return to my loop after an exception?
我有以下代码:
import urllib.request
import json
flag_servidor = 0
flag_salva_txt = 0
numero = 0
#codigo para verificar se há conexao como servidor e caso nao
#haja ele criar um arquivo txt com as infos
while 1:
try:
url = urllib.request.urlopen('http://IP/CAMINHO/get_infos.php')
x_ = url.read()
y_ = json.loads(x_.decode('utf-8'))
get_turno_ = y_["turno"]
print(get_turno_)
#salva as infos do txt dentro do banco de dados
if flag_salva_txt == 1: #significa que temos infos para serem salvas
arquivo = open('novo-arquivo1.txt', 'r')
for linha in arquivo:
linha = linha.rstrip()
valor = linha.split(";")
print(valor[0])
flag_salva_txt = 0
continue
except Exception as e:
print("Servidor indisponível.Erro:", e)
if flag_salva_txt == 0:
#após salvar txt
flag_salva_txt = 1
numero = numero +1
arquivo = open('novo-arquivo'+str(numero)+'.txt', 'w')
arquivo.write('nova linha;123;1pop' + '\n')
arquivo.close()
continue
问题是:当第一次发生异常时,它向我显示消息错误,但是当它第二次发生时,我的代码停止 运行 并且没有显示任何内容。
我还是不太清楚crystal你的程序应该做什么,但也许这样的事情会有所帮助。
我将您的程序重构为一个单独的函数来获取数据,并在主循环中将其打印出来(或您喜欢做的任何事情)。
此外,为了不让您的脚本尽可能快地访问服务器,每个请求之间都有 5 秒的延迟,无论成功与否。
import datetime
import time
import urllib.request
import json
def get_turno():
url = urllib.request.urlopen("http://IP/CAMINHO/get_infos.php")
data = json.loads(url.read().decode("utf-8"))
return data["turno"]
while True:
try:
turno = get_turno()
except Exception as exc:
print("Retrieving turno data failed: {}".format(exc))
else:
current_time = datetime.datetime.now().isoformat()
print("Time: {} - Turno: {}".format(current_time, turno))
time.sleep(5)
我有以下代码:
import urllib.request
import json
flag_servidor = 0
flag_salva_txt = 0
numero = 0
#codigo para verificar se há conexao como servidor e caso nao
#haja ele criar um arquivo txt com as infos
while 1:
try:
url = urllib.request.urlopen('http://IP/CAMINHO/get_infos.php')
x_ = url.read()
y_ = json.loads(x_.decode('utf-8'))
get_turno_ = y_["turno"]
print(get_turno_)
#salva as infos do txt dentro do banco de dados
if flag_salva_txt == 1: #significa que temos infos para serem salvas
arquivo = open('novo-arquivo1.txt', 'r')
for linha in arquivo:
linha = linha.rstrip()
valor = linha.split(";")
print(valor[0])
flag_salva_txt = 0
continue
except Exception as e:
print("Servidor indisponível.Erro:", e)
if flag_salva_txt == 0:
#após salvar txt
flag_salva_txt = 1
numero = numero +1
arquivo = open('novo-arquivo'+str(numero)+'.txt', 'w')
arquivo.write('nova linha;123;1pop' + '\n')
arquivo.close()
continue
问题是:当第一次发生异常时,它向我显示消息错误,但是当它第二次发生时,我的代码停止 运行 并且没有显示任何内容。
我还是不太清楚crystal你的程序应该做什么,但也许这样的事情会有所帮助。
我将您的程序重构为一个单独的函数来获取数据,并在主循环中将其打印出来(或您喜欢做的任何事情)。
此外,为了不让您的脚本尽可能快地访问服务器,每个请求之间都有 5 秒的延迟,无论成功与否。
import datetime
import time
import urllib.request
import json
def get_turno():
url = urllib.request.urlopen("http://IP/CAMINHO/get_infos.php")
data = json.loads(url.read().decode("utf-8"))
return data["turno"]
while True:
try:
turno = get_turno()
except Exception as exc:
print("Retrieving turno data failed: {}".format(exc))
else:
current_time = datetime.datetime.now().isoformat()
print("Time: {} - Turno: {}".format(current_time, turno))
time.sleep(5)