2

DictReader を使用して csv ファイルから内容を読み取るための Python コードを作成しています。

with open(parafile, "rb") as paracsv:         
    #Read in parameter values as a dictionary
    paradict = csv.DictReader(paracsv)
    if paradict.line_num <= 1:
        return None

csvファイルから読み込んだ行が1行しかない場合はすぐに戻れるようにしたいです。

line_num を確認しようとしましたが、ファイルに複数の行があっても常に 0 を返します。これを確認する正しい/効率的な方法を知っている人はいますか?

ありがとう

4

1 に答える 1

1

行を読まなければ、ファイル内に何行あるかを知ることはできません。このcsvreader.line_num属性は、ファイルに存在する行数ではなく、これまでに読み取られた行数を反映していることに注意してください。

ソース反復子から読み取られた行数。レコードは複数の行にまたがることがあるため、これは返されるレコードの数と同じではありません。

ファイルを読むだけです。ファイルに行が 1 つしかない場合は、とにかく早く戻ることになります。

読み取られた行がない場合にのみ戻るNone場合は、次を使用できます。

with open(parafile, "rb") as paracsv:         
    #Read in parameter values as a dictionary
    paradict = csv.DictReader(paracsv)
    has_rows = False
    for line in paradict:
        has_rows = True

    if not has_rows:
        return None

ファイルの最初のヘッダー行を超える行がない場合、 for ループがすぐに終了するため、これはEarlyを返します。

于 2013-05-10T20:54:50.193 に答える