Не могу открыть удаленные ФИТЫ с астропией более одного раза - PullRequest
0 голосов
/ 04 октября 2019

Я пишу пакет для обработки астрономических файлов FITS. Я хочу, чтобы файлы были локальными или в облаке. Для локальных файлов я могу fits.getdata() или fits.open() столько раз, сколько я хочу, но в удаленных файлах мне нужно закрыть файл, прежде чем я смогу открыть его снова.

Это наглядный пример проблемы:

>>> file
<S3Boto3StorageFile: filename.fits.fz>

>>> from astropy.io import fits                                                                                                                                                                             
>>> hdul = fits.open(file)                                                                                            
>>> hdul.info() 

Filename: filename.fits.fz
No.    Name      Ver    Type      Cards   Dimensions   Format
  0  PRIMARY       1 PrimaryHDU       8   ()      
  1  SCI           1 CompImageHDU    268   (3054, 2042)   float32   
  2  CAT           1 BinTableHDU    157   259R x 37C   [D, D, D, D, K, K, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, K, D, D]   
  3  BPM           1 CompImageHDU     10   (3054, 2042)   uint8  

>>> fits.getdata(file,header=True) 

OSError: Empty or corrupt FITS file

>>> file.close()
>>> hdul = fits.open(file)
>>> hdul.info()

Filename: filename.fits.fz
No.    Name      Ver    Type      Cards   Dimensions   Format
  0  PRIMARY       1 PrimaryHDU       8   ()      
  1  SCI           1 CompImageHDU    268   (3054, 2042)   float32   
  2  CAT           1 BinTableHDU    157   259R x 37C   [D, D, D, D, K, K, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, D, K, D, D]   
  3  BPM           1 CompImageHDU     10   (3054, 2042)   uint8 

Для удаленных файлов мне нужно сделать file.close(), прежде чем его можно будет снова открыть, тогда как с локальными файлами я не делаю.

В настоящее время я должен проверить,вход file подобен файлу (поэтому я его закрываю) или Path или str (когда я его не закрываю). Мне кажется немного хакерским делать эту проверку.

Если это предполагаемое поведение, мне было интересно, почему он отличается для локальных и удаленных файлов, или, возможно, даже для файловых объектов и не-объектов.

...