Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python PyFITS:文件已存在_Python_Fits_Pyfits - Fatal编程技术网

Python PyFITS:文件已存在

Python PyFITS:文件已存在,python,fits,pyfits,Python,Fits,Pyfits,我真的很接近完成一个大型代码,但它的最后一部分似乎失败了,我不知道为什么。我在这里要做的是取一个图像数组,将其与另一个图像数组进行比较,无论初始图像数组是否等于1,我都要在第二个图像数组中屏蔽该部分。然而,我得到了一个奇怪的错误: 代码: 错误: /home/vidur/se_files/fetch_swarp10.py in objmask(inimgs, inwhts, thresh1, thresh2, tfdel, xceng, yceng, outdir, tmpdir) 12

我真的很接近完成一个大型代码,但它的最后一部分似乎失败了,我不知道为什么。我在这里要做的是取一个图像数组,将其与另一个图像数组进行比较,无论初始图像数组是否等于1,我都要在第二个图像数组中屏蔽该部分。然而,我得到了一个奇怪的错误:

代码:

错误:

/home/vidur/se_files/fetch_swarp10.py in objmask(inimgs, inwhts, thresh1, thresh2, tfdel, xceng, yceng, outdir, tmpdir)
    122             if newmaskimg[i,j]==1:
    123                 oimg[i,j]=0
--> 124     pf.writeto('newestmask'+str(inimgs)[5:16]+'.fits',newmaskimg)
    125 
    126 

/usr/local/lib/python2.7/dist-packages/pyfits/convenience.pyc in writeto(filename, data, header, output_verify, clobber, checksum)
    396         hdu = PrimaryHDU(data, header=header)
    397     hdu.writeto(filename, clobber=clobber, output_verify=output_verify,
--> 398                 checksum=checksum)
    399 
    400 

/usr/local/lib/python2.7/dist-packages/pyfits/hdu/base.pyc in writeto(self, name, output_verify, clobber, checksum)
    348         hdulist = HDUList([self])
    349         hdulist.writeto(name, output_verify, clobber=clobber,
--> 350                         checksum=checksum)
    351 
    352     def _get_raw_data(self, shape, code, offset):

/usr/local/lib/python2.7/dist-packages/pyfits/hdu/hdulist.pyc in writeto(self, fileobj, output_verify, clobber, checksum)
    651                     os.remove(filename)
    652                 else:
--> 653                     raise IOError("File '%s' already exists." % filename)
    654         elif (hasattr(fileobj, 'len') and fileobj.len > 0):
    655             if clobber:

IOError: File 'newestmaskPHOTOf105w0.fits' already exists.

如果您不关心覆盖现有文件,
pyfits.writeto
接受
clobber
参数以自动覆盖现有文件(它仍将输出警告):

顺便说一句,让我强调一下,您上面发布的代码并不是使用Numpy的正确方法。代码中的循环可以写在一行中,速度会快几个数量级。例如,许多可能性之一就是这样写:

oimg[newmaskimg == 1] = 0

是,添加
clobber=True
。我以前在我的代码中使用过这个,它工作得很好。或者,只需转到
sudo rm path/to/file
,然后将它们清除,这样您就可以再次运行它。

我也遇到了同样的问题,结果是使用参数
clobber
仍然有效,但在AstroPy的未来版本中不受支持


参数
overwrite
执行相同的操作,并且不会发出错误消息。

您正在写入一个已经存在的文件(看起来像),如果您将一个
os.remove(path)
放在它前面,看看它是否得到解决,该怎么办。(其中
path='newestmask'+str(inimgs)[5:16]+'.fits'
pyfits.writeto(..., clobber=True)
oimg[newmaskimg == 1] = 0