-1

初心者はいつでも初心者!私はpython 2.7.5、OSX 10.8を使用しています

私のアルゴリズムの問​​題だと思うので、pyfits を知らなくても、私の質問に対する解決策があるかもしれません! 次のコードを使用します

#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import pyfits
from PySide import QtGui, QtCore
import os
import fonctions
print('\n\n')

directory = raw_input("file path : ")

hdulist=pyfits.open(directory)
print('\n\n')
print('--------------------------------fits informations :')
hdulist.info()
print ('\n\n')


print("\n")
j=0 #PyFITS is using zero-based indexing when referring to HDUs
k=0  
while True: #runs through all the HDUs
    try:    
        hdulist[j].header[k] is None
    except IndexError:  #errors handling when coming to the last HDU
        print("--------------------------------No more HDU! \n\n\n\n\n\n")
        break

    while True: #runs through all the headers
        try:
            hdulist[j].header[k] is None
        except IndexError:  #errors handling when coming to the last header
            i=0
            break
        header = hdulist[j].header[k]
        print (hdulist[j].header.ascardlist())
        k=k+1
    j=j+1

hdulist[j].header.ascardlist() を表示するので「動作」しますが、次の HDU に進む前に k 回出力します... 何かアドバイスはありますか?

4

3 に答える 3

1

Pyfits を使用したことはありませんが、ドキュメントを確認しました。このループ構造の方が適していると思います

for hdu in hdulist:
    for hdu_header in hdu.header.itervalues():
        print( hdu_header.ascardlist() )

うまくいけば、私はあなたを助けることができます.

于 2013-07-08T15:53:44.413 に答える
0

これが何をするのかを実際に説明していませんでしたが、HDU 内のすべてのヘッダーを表示しようとしているだけのようです。while ステートメントや try/except は必要ありません。これで十分です:

with pyfits.open(filename) as hdulist:
    for hdu in hdulist:
        print hdu.header
于 2013-11-30T04:27:24.107 に答える
0

割り当て k=0 は、新しい j ごとにリセットする必要があるため、外側の「while True」ループ内に入れる必要があると確信しています。

于 2013-11-11T22:34:36.277 に答える