我有一个csv文件列表:'empty.csv'和'headerOnly.csv' 第一个文件为空,第二个文件只有一行(标题)
我正在尝试在文件为空时引发异常,并在仅包含标题的情况下继续操作。
public static string ReplaceHost(string original, string newHostName)
{
UriBuilder builder = new UriBuilder(original);
builder.Host = new Uri(newHostName).Host;
return builder.ToString();
}
我知道'headerOnly.csv'文件只有一行,并且第一条打印语句对此进行了验证。即使'headerOnly.csv'的打印语句打印出1,它也永远不会到达elif语句,甚至不会为该文件打印'csv文件为空'。 不知道为什么它没有到达小精灵
答案 0 :(得分:3)
csv_file
是文件中各行的生成器。第一次循环浏览时,它将读取所有行。第二次,没有更多的行可读取,因此循环返回0
。
将结果保存到变量:
line_count = sum(1 for line in csv_file)
print(line_count)
if line_count == 0:
print("csv file is empty")
elif line_count == 1:
print("only has header")
如果之后仍要读取文件,则需要倒带:
csv_file.seek(0)