首页 > 解决方案 > 这个 TypeError 来自哪里?(将肌动蛋白用于恒星活动指数)类型错误:预期的 str、字节或 os.PathLike 对象,而不是 bool

问题描述

我正在使用可以在这里找到的包:https ://github.com/gomesdasilva/ACTIN来查找二进制系统的活动索引。最初,我在 spyder 上的独立测试文件上运行了代码,一切似乎都运行良好:

import actin.actin as actin

actin.actin("C://Users//Rp199/Desktop//J0608_59_harps_2018//HARPS.2019-08-22T08_37_32.360_s1d_A.fits",
            calc_index=['I_CaII'], rv_in=None,
            config_file="C:\\Users\\Rp199\\anaconda3\\Lib\\site-packages\\actin\config_lines.txt",
            save_output=True, ln_plts=False, obj_name=False, targ_list='J0608-59',
            del_out=False, frac=True, test=False, save_plots=False)

EXECUTING ACTIN_FILE
--------------------
Executing: check_targ
Targets = J0608-59
Object = J0608-59

LOADING DATA FROM CONFIG FILE
-----------------------------
CaIIK
CaIIH
CaIIR1
CaIIR2

READING DATA FROM FILE:
-----------------------
Working folder: C://Users//Rp199/Desktop//J0608_59_harps_2018\
Reading file:   HARPS.2019-08-22T08_37_32.360_s1d_A.fits
Telescope:  ESO-3P6
Instrument: HARPS
Object:     J0608-59
*** WARNING: Could not find or open:
*** C://Users//Rp199/Desktop//J0608_59_harps_2018\HARPS.2019-08-22T*_ccf_*_A.fits
*** WARNING: No CCF data available.
*** WARNING: Could not find or open:
*** C://Users//Rp199/Desktop//J0608_59_harps_2018\HARPS.2019-08-22T*_bis_*_A.fits
*** WARNING: No BIS data available.
*** ERROR: No rv data available to calibrate wavelength.

---------------------------------
Fractional pixels:  True
Files analysed:     1
Save output:        True
Elapsed time:       0.0013 min

输出表明它没有正确的 CCF 和 BIS 文件。

我现在尝试在另一个 fit 文件上运行代码,但是,在这个文件夹中有 BIS 和 CCF 文件并接收输出:

READING DATA FROM FILE:
-----------------------
Working folder: C://Users//Rp199//Desktop//DATA_NEW\
Reading file:   HARPS.2019-01-20T05_16_29.969_s1d_A.fits
Telescope:  ESO-3P6
Instrument: HARPS
Object:     J0608-59
CCF file:   HARPS.2019-01-20T05_16_29.969_ccf_G2_A.fits
BIS file:   HARPS.2019-01-20T05_16_29.969_bis_G2_A.fits

Executing check_duplicate:
Traceback (most recent call last):

  File "C:\Users\Rp199\Desktop\actintest.py", line 10, in <module>
    actin.actin("C://Users//Rp199//Desktop//DATA_NEW//HARPS.2019-01-20T05_16_29.969_s1d_A.fits",

  File "C:\Users\Rp199\anaconda3\lib\site-packages\actin\actin.py", line 225, in actin
    output = actin_file(files_list[k][i][j],

  File "C:\Users\Rp199\anaconda3\lib\site-packages\actin\actin.py", line 92, in actin_file
    dupl = ac_save.check_duplicate(data['obj'], data['obs_date'], data['instr'], data['file_type'], save_output)

  File "C:\Users\Rp199\anaconda3\Lib\site-packages\actin\actin_files\ac_save.py", line 45, in check_duplicate
    pfile_name = os.path.join(out_dir, obj, file_name)

  File "C:\Users\Rp199\anaconda3\lib\ntpath.py", line 78, in join
    path = os.fspath(path)

TypeError: expected str, bytes or os.PathLike object, not bool

我对为什么会发生此错误感到困惑,尤其是在使用同一文件夹中没有任何 CCF 或 BIS 文件的独立文件进行测试时,没有错误。

谢谢

标签: pythonastronomyfits

解决方案


在仔细阅读回溯后,可以看到如果save_output参数不是其他任何东西,False它必须是指定输出目录的字符串。这是不明显的,因为它没有写在文档字符串中,并且该参数的默认值False表明它也可以True在您传递时采用。但是这个包的代码正在做一些非惯用的事情,这可能会导致其他问题。如果我有时间,我会联系它的作者,看看我是否可以提供任何改进建议。


推荐阅读