使用ACTIN计算恒星活动指数时TypeError报错原因咨询
解决ACTIN包处理带CCF/BIS文件时的TypeError问题
从你的报错信息和代码调用来看,问题出在**obj_name参数的赋值上**:你传入了obj_name=False,但这个参数应该接收字符串类型的目标对象名称,而非布尔值。
为什么无CCF/BIS的文件能正常运行?
当处理没有CCF和BIS的文件时,ACTIN的代码逻辑可能跳过了check_duplicate检查步骤(或者该分支下未使用obj_name的值),所以布尔值没有触发错误。但当存在CCF/BIS文件时,代码会执行重复文件检查,此时obj_name=False被当作对象名称传入check_duplicate函数,而os.path.join需要字符串路径,自然就抛出了TypeError: expected str, bytes or os.PathLike object, not bool。
修复方案
把obj_name参数从False改成你指定的目标对象名称(也就是targ_list里的'J0608-59'),修改后的调用代码如下:
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='J0608-59', # 这里改为字符串类型的对象名称 targ_list='J0608-59', del_out=False, frac=True, test=False, save_plots=False )
另外你也可以检查ACTIN包的文档确认obj_name参数的预期类型——它是用来指定输出文件中使用的对象名称,而非布尔开关。如果不需要自定义名称,也可以不传这个参数,让代码自动从FITS文件头中读取对象名称。
内容的提问来源于stack exchange,提问作者Rikesh Patel
相关产品推荐
相关产品推荐

