Python所需的字符串不是列表

2024-10-01 02:18:27 发布

您现在位置:Python中文网/ 问答频道 /正文

运行下面的代码时,我收到一条错误消息,上面说“TypeError:expected str,bytes或os.PathLike object,not list”

我使用Spyder调试了上面的错误消息,但是我找不到错误。 有人能告诉我如何解决这个错误吗?代码如下所示

谢谢大家!

J1 = ['520A','520B']
J2 = ['560S','580A']

JOINTS = J1 + J2

FILES_IN = ['dynres-x-eqk.lst','dynres-y-eqk.lst','dynres-z-eqk.lst'] 
FILE_OUT = ['_Accelerations.txt']

def joint_acc(joint, file_in):
    output = []
    with open(file_in, 'rt') as f_in:
        for line in f_in:
            if 'JOINT ACCELERATIONS' in line:
                for line in f_in:
                    if line.startswith(joint):
                        while line.strip() != '':
                            output.append(line)
                            line = next(f_in)
                        break
    return ''.join(output)

with open(FILE_OUT, 'wt') as f_out:
    for Jt in JOINTS:
        for filename in FILES_IN:
            f_out.write(joint_acc(Jt, filename))
        f_out.write('\n')


Tags: 代码in消息foroutput错误lineout
2条回答

你做到了:

FILE_OUT = ['_Accelerations.txt']

然后:

with open(FILE_OUT, 'wt') as f_out:

所以这个open得到list,它导致TypeError。尝试用FILE_OUT = '_Accelerations.txt'替换FILE_OUT = ['_Accelerations.txt']

您的FILE_OUT变量是list类型,但是open等待strbytesos.PathLike对象类型

您应该将FILE_OUT变量转换为正确的类型

例如字符串:

FILE_OUT = "_Accelerations.txt"

或者您可以使用0索引访问列表的第一个元素(您的列表只有1个元素)

像这样:

with open(FILE_OUT[0], 'wt') as f_out:

相关问题 更多 >