0

numpy.loadtxtデータの列を使用する前に、またはnumpy.genfromtxtデータの列をnumpy配列にロードする前に、データファイルにヘッダーしかないことを確認する最もエレガントな(および/またはPythonic)方法は何ですか?

実行時にヘッダーをディスクに書き込み、時にはデータを書き込まない量子モンテカルロコードがあります(使用されているクラスターのウォールクロック)。一度に多数のデータ ファイルを処理するために Python スクリプトを作成したことは明らかですが、割り当てられた時間内にいくつかのファイルにデータが書き込まれないことがあります。データを読み込んで特定の操作を実行する前に、分析スクリプトにファイルが空であることを知らせる必要があります。

私の方法(これは機能しますが、おそらく最もエレガントではないかもしれません)は、次のような関数を呼び出すことです

def checkIfEmpty(fName,n):
    '''
    takes the first non-header line number and returns true or false
    depending upon whether that line is blank or not.
    '''
    Empty = False
    fp = open(fName)
    numLines=0
    for line in fp:
        numLines += 1
    fp.close()

    if n==numLines:
        Empty=True

    return Empty
4

2 に答える 2

1

何かのようなもの:

def is_header_only(fname):
    with open(fname) as fin:
        return next(fin, '').lstrip().startswith('#') and next(fin, None) is None
于 2013-10-31T17:01:48.170 に答える