gpt4 book ai didi

python - 在 python 中读取文件时捕获错误的最佳位置是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:32 25 4
gpt4 key购买 nike

我是 Python 新手,并遇到以下问题。用户上传 CSV 文件,然后我解析该文件。然而,很多事情都可能出错。我发现的主要问题是 a) 他们上传的文件毕竟不是 CSV 文件,或者 b) 文件不是使用 UTF8 编码(这是我们系统的默认编码)上传的。

问题是:我到底应该在哪里检查这些问题?这是我的脚本:

with open(path) as f:
reader = csv.reader(f)
for row in reader:

(do stuff...)

我尝试添加这个:

try:
reader = csv.reader(f)
except:
error = "There was an error..."

但是如果用户上传的文件编码错误,则不会被捕获。它似乎只在循环开始时被捕获(对于读取器中的行),并且仅针对引起问题的特定行。这是否意味着我应该在 for 语句中进行这种错误检查?对我来说,最好只执行一次,而不是对每个项目执行一次,但我不确定这里什么最有意义......

最佳答案

可能有更直接的方法可以使用 CSV 阅读器捕获此类内容(我不确定),但是当我有来自其他用户的可能出现此类错误的输入文件时,我只是解析这些文件手动。例如:

import sys
NumFields = 3
inf = open(path, "rU")

for line in inf:
line = line.strip() #get rid of weird end-of-line characters from bad encoding
ls = line.split(",")
if len(ls) != NumFields:
ls = line.split("\t") ##if you can't get the number of fields with comma split, try tab
if len(ls) != NumFields:
sys.exit(1)
print ls

关于python - 在 python 中读取文件时捕获错误的最佳位置是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52818962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com