我有这个密码
for n in halo_param:
for i in range(0,a):
mask = var1['halo_id'] == n
newtbdata = tbdata1[mask]
hdu = pyfits.BinTableHDU(newtbdata)
hdu.writeto(('/home/ssridhar/test_roncarelli/13.8_M200_13.9/halo_{0}.fits').format(i)) 这里,halo_param是一个chararray和a = len(halo_param)
chararray(['465000725000010', '43000145000011', '40000536000011',
'499000523000009', '463000313000010', '470000639000011',
'462000416000010', '499000549000008', '506000176000009']我想做的是,我的程序应该一个一个地接受halo_param的值,然后根据一个(即,即第一个文件应该命名为halo_0.fits和第二个halo_1.fits等)的范围写出文件。
如果我删除第二个循环,我的程序就会正常工作,也就是说,它会打印出带有halo_param值的文件,比如halo_465000725000010、halo_43000145000011等等。
如果包含第二个for循环,则我的程序可以工作,但对所有文件执行相同的第一个条件。
我在这里做错什么了?
发布于 2014-03-03 17:09:01
不要做循环中的循环;把它压平,就像
for i,n in enumerate(halo_param):
mask = var1['halo_id'] == n
newtbdata = tbdata1[mask]
hdu = pyfits.BinTableHDU(newtbdata)
hdu.writeto(('/home/ssridhar/test_roncarelli/13.8_M200_13.9/halo_{0}.fits').format(i)) 编辑:,如果你在循环中跟踪,你会看到它试图将halo_param写到file_0,然后halo_param1写到file_0,file_1,.然后halo_param8到file_0,file_1,file_2 .最后,所有文件都是最后一个文件的副本。
发布于 2014-03-03 17:14:09
修正字符串格式?
for n in halo_param:
for i in range(0,a):
mask = var1['halo_id'] == n
newtbdata = tbdata1[mask]
hdu = pyfits.BinTableHDU(newtbdata)
hdu.writeto(('/home/ssridhar/test_roncarelli/13.8_M200_13.9/halo_{0}.fits'.format(i)))https://stackoverflow.com/questions/22152631
复制相似问题