1

我正在尝试执行一个给我 IndexError 的 python 脚本。我知道 rsplit() 方法无法拆分字符串。我不完全知道为什么它显示索引超出范围。谁能告诉我如何解决这个问题?

代码

raw_directory = 'results/'
for name in glob.glob(raw_directory + '*.x*'):
        try:
                #with open(name) as g:
                #       pass
                print(name)
        reaction_mechanism = 'gri30.xml' #'mech.cti'
        gas = ct.Solution(reaction_mechanism)
        f = ct.CounterflowDiffusionFlame(gas, width=1.)
        name_only = name.rsplit('\\',1)[1] #delete directory in filename
        file_name = name_only
        f.restore(filename=raw_directory + file_name, name='diff1D', loglevel=0)

输出

如果我删除文件 strain_loop_07.xml,我会在另一个文件中遇到同样的错误。

results/strain_loop_07.xml
Traceback (most recent call last):
   File "code.py", line 38, in <module>
     name_only = name.rsplit('\\'1)[1] #delete directory in filename
IndexError: list index out of range
4

1 回答 1

0

如果 rsplit 未能拆分字符串,它会返回一个只有一个解的数组,因此 [0] 而不是[1]

我在回复这篇文章时了解到,“名称”变量充满了“result/strain_loop_07.xml”之类的文本,所以你想用一个更像的行来拆分它

name_only = name.rsplit('/', 1)[1]

所以你会得到“strain_loop_07.xml”元素,这可能是你想要的,因为 name.resplit('/', 1) 返回类似

['result', 'strain_loop_07.xml']

顺便说一句,不要犹豫在中途打印变量以进行调试,这通常是要做的事情,以了解变量在特定时间的状态。就在你分手之前!

于 2021-02-13T08:01:46.940 回答