-1

ファイル名の配列があり、各ファイルを pyfits で開きたいです。したがって、私のコードは次のようになります。

import pyfits
files=array(["1131lc.fits+2","1132lc.fits+2","1134lc.fits+2","1136lc.fits+2","1137lc.fits+2","1138lc.fits+2"])
for file in files:
    data = pyfits.open(files)

print data
print len(data)

しかし、このように、最後の 2 つのコマンドは、"[]" と "0" を出力します。問題はどこだ?

4

3 に答える 3

2

変化する

data=pyfits.open(files)

data=pyfits.getdata(file)

それはうまくいくはずです

編集: printstatements も機能させたい場合は、次のようにする必要があります。

data=[]
for file in files:
    data.append(pyfits.getdata(file))
print len(data)

データの各ビットを個別に取得するのではなく、data[i] を取得して、リストの i 番目のアイテムを取得します。

edit2: 正しいパスで実行したと確信していますか? (ファイルが別のパスのどこかに保存されていないことを確認しますか?-fits+2 が正しい拡張子であるかどうかもわかりません)

Edit3: IOError が発生した場合、おそらくファイル名などに関連している可能性があります。作成したコードを含む .py ファイルがデータと同じディレクトリにない場合は、ファイルを見つけることができるようにフル パスが必要です。

于 2013-07-05T12:27:25.363 に答える
0

まず第一に、pyfits は fit ファイルの単位を "+2" という形式で指定することを好まないということです。単位は、取得する必要があるデータに応じて、別の方法で指定できます。私の場合、正しいことは次のとおりです。

data=[]
for file in files
    data.append(pyfits.getval(file, 'TSTART', 2))

ここで、filesは、はめあいファイルの名前が指定されている配列です (ここでも、"+2" は付けません)。このように、データ配列は、各ファイルの 2 番目のユニットのヘッダーに「TSTART」キーワードの 6 つの値を格納します。これが役に立つことを願っています。

于 2013-07-05T15:50:29.040 に答える