簡體   English   中英

PyFITS:文件已存在

[英]PyFITS: File already exists

我真的很接近完成一個大代碼,但它的最后一部分似乎失敗了,我不知道為什么。 我在這里嘗試做的是獲取一個圖像數組,將其與不同的圖像數組進行比較,並且無論初始圖像數組等於 1,我都想在第二個圖像數組中屏蔽該部分。 但是,我收到一個奇怪的錯誤:

代碼:

maskimg='omask'+str(inimgs)[5:16]+'.fits'
newmaskimg=pf.getdata(maskimg)
oimg=pf.getdata(inimgs)
for i in range (newmaskimg.shape[0]):
    for j in range (newmaskimg.shape[1]):
        if newmaskimg[i,j]==1:
            oimg[i,j]=0
pf.writeto('newestmask'+str(inimgs)[5:16]+'.fits',newmaskimg)

錯誤:

/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參數來自動覆蓋現有文件(它仍然會輸出警告):

pyfits.writeto(..., clobber=True)

順便說一句,讓我非常強調您上面發布的代碼非常不是使用 Numpy 的正確方法。 代碼中的循環可以寫在一行中,速度會快幾個數量級。 例如,許多可能性之一是這樣寫:

oimg[newmaskimg == 1] = 0

是的,添加clobber = True 我以前在我的代碼中使用過它,它工作得很好。 或者,只需去sudo rm path/to/file並刪除它們,以便您可以再次運行它。

我遇到了同樣的問題,結果證明使用參數clobber仍然有效,但在未來版本的 AstroPy 中將不受支持。

參數overwrite做同樣的事情並且不會發出錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM