修复 try 循环始终会执行 except - else

问题描述 投票:0回答:1

在这个“try, except,else”循环中,基本上我不明白为什么它会always选择french_words.csv。 IIUC,如果words_to_learn.csv存在,那么它将使用该csv文件,如果不存在,则使用french_words.csv。

import pandas

french = {}
try:
    data = pandas.read_csv("data/words_to_learn.csv")
except FileNotFoundError:
    org_data = pandas.read_csv("data/french_words.csv")
    french = org_data.to_dict(orient="records")
else:
    french = data.to_dict(orient="records")

print(french)
python pandas csv try-catch read-csv
1个回答
0
投票

发布的代码没有缩进。我认为它对你来说是正确的,只是在将其粘贴到此处时迷失了。它应该是这样的:

try:
    data = pandas.read_csv("data/words_to_learn.csv")
except FileNotFoundError:
    org_data = pandas.read_csv("data/french_words.csv")
    french = org_data.to_dict(orient="records")
else:
    french = data.to_dict(orient="records")

您正确地描述了此尝试循环意味着字典french最好从主文件words_to_learn.csv加载,但如果没有所述文件,它将改为读取备份文件french_words.csv .

请注意,如果在读取 words_to_learn.csv 时出现错误,则不会很好地覆盖,因为 data 不会被定义。但事实并非如此,因为您没有报告此类错误。

现在为什么脚本总是从备份中加载? 请验证主文件是否存在,并在您的问题中报告它,方法是将其插入到您的代码中:

import os.path as osp

primary_file = "data/words_to_learn.csv"

print(osp.isfile(primary_file))

如果返回 False,你就有答案了。

如果属实,那么我们继续讨论。

© www.soinside.com 2019 - 2024. All rights reserved.