2016-09-02 3 views
1
import pyfits 

file = input('Enter file name as string: ') 

newfile = file.replace('.fits','.dat') 

f = pyfits.getdata(file) 

h = pyfits.getheader(file) 

g = open(newfile,'w') 

ref = h['JD_REF'] 

for x in range (len(f)): 
     deltat = (f[x][0]-ref)/86400 
     refday = ref/86400 
     time = refday + deltat 
     mag = f[x][3] 
     err = f[x][4] 
     flag = f[x][8] 
     g.write('%9s %9s %10s %2s\n'% (time,mag,err,flag)) 


g.close() 

データテーブルを含む.fitsファイルを.datファイルに変換しようとしています。このプログラムは必要な機能を実行しますが、一度に1つのアクションしか実行しません。私は約300の.fitsファイルを変換する必要があり、そのたびに名前を入力することによってすべてのことをするのは苦しいでしょう。私はプログラムを実行するために選択することができ、私のディレクトリ内のすべてのファイルに対してスクリプトを実行して実行することができます。ディレクトリ内のすべてのファイルに対してpythonスクリプトを実行するにはどうすればよいですか?

現在のディレクトリにあるすべてのファイルでこのプログラムを実行するにはどうすればよいですか?

答えて

2

os.listdir()を使用してください。 '.fits'パターンに一致するファイルのみを返す場合は、glob.glob('*.fits')を使用できます。

これは、現在のディレクトリ内のすべてのファイル、またはそれを引数として指定したディレクトリを返します。これらの名前をループして、入力ファイルとして使用できます。何かのように:

for f in os.listdir(): 
    newfile = f.replace('.fits', '.dat') 
    # all the rest of your code 
+0

あなたのソリューションは完璧に動作します!どうもありがとうございます! – cnmcferren

+0

@cnmcferrenそれを聞いてうれしい、あなたはその場合に受け入れられた答えをマークする必要があります。 – bnaecker

関連する問題