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文件。该程序执行我想要的必要功能,但它只能一次执行一个动作。我有大约300个.fits文件需要转换,并通过每次输入名称都很痛苦来完成它们。我希望它可以选择运行程序,它会遍历并在我的目录中的所有文件上执行脚本。
如何修改此程序以在当前目录中的所有文件上运行?
答案 0 :(得分:2)
使用os.listdir()
。如果您只想返回与'.fits'
模式匹配的文件,则可以使用glob.glob('*.fits')
。
这将返回当前目录中的所有文件,或者您作为参数提供的任何目录。您可以遍历这些名称,并将它们用作输入文件。类似的东西:
for f in os.listdir():
newfile = f.replace('.fits', '.dat')
# all the rest of your code