try:
symbol = input("Specify symbol: ").upper()
dt_string = input("Specify datetime in isoformat (e.g.'2021-05-27T03:30:00+00:00'): ")
try:
dt = datetime.fromisoformat(dt_string)
except Exception as e:
print(e)
ts = Decimal(input("Specify ticksize after: "))
except Exception as e:
print(e)
else:
with open(join(file_directory, "ticksize_changes.json"), "r") as f:
ts_dict = json.load(f)
print(ts_dict)
if ts_dict[symbol]: # if symbol exists in json file
ts_dict[symbol].append({'datetime': dt_string, 'ts_after': ts})
else:
ts_dict[symbol] = [{'datetime': dt_string, 'ts_after': ts}]
with open(join(file_directory, "ticksize_changes.json"), "w") as f:
json.dump(ts_dict, f, default=str)
我有一个 try- except-else 结构,在 else 中,我有一个 with 语句。在 with 语句中,我有一个简单的 if-else。我尝试了 if 语句成功执行的情况,但是当我尝试了应该到达 else 语句的情况时,我收到以下错误:
控制台消息是正确的——确实不存在这样的密钥。但为什么else语句执行失败呢?
你应该使用这个语句,首先确保包含它的字典键。
if symbol in ts_dict.keys(): # if symbol exists in json file
ts_dict[symbol].append({'datetime': dt_string, 'ts_after': ts})
else:
ts_dict[symbol] = [{'datetime': dt_string, 'ts_after': ts}]