问题描述
我正在尝试执行一个给我一个 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
解决方法
如果 rsplit 未能拆分字符串,则返回一个只有一个解的数组,因此 [0] 而不是 [1]
我在这篇文章的回复中了解到“name”变量填充了类似“result/strain_loop_07.xml”的文本,所以你想对它进行分割,用一行更像
name_only = name.rsplit('/',1)[1]
所以你会得到“strain_loop_07.xml”元素,这可能是你想要的,因为 name.resplit('/',1) 返回类似
['result','strain_loop_07.xml']
顺便说一句,不要犹豫,在中途打印您的变量以进行调试,这通常是要做的事情,以了解您的变量在特定时间的状态。就在你们分手之前!