IndexError: List index out of range with glob(), rsplit()

IndexError: List index out of range with glob(), rsplit()

我正在尝试执行一个 python 脚本,它给我一个 IndexError。我知道 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

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

我在回复此 post 时了解到,“名称”变量填充了像“result/strain_loop_07.xml”这样的文本,因此您想用一行将其拆分更喜欢

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

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

['result', 'strain_loop_07.xml']

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