问题描述
我正在尝试使用Python编辑Abaqus输入文件,并且我需要查找哪些行具有某些标题(例如“ * Nodes”,“ * Elements”)。我有如下代码可以正常工作:
headerline = 0
for line in input.readlines():
if line.lower().startswith('*node'):
break
headerline = headerline + 1
print(headerline)
这将打印正确的值,在这种情况下为8。但是,如果我背对背运行此命令或尝试搜索另一个标头,则它始终为下一个标头打印零。
headerline = 0
for line in input.readlines():
if line.lower().startswith('*node'):
break
headerline = headerline + 1
print(headerline)
headerline = 0
for line in input.readlines():
if line.lower().startswith('*node'):
break
headerline = headerline + 1
print(headerline)
headerline = 0
for line in input.readlines():
if line.lower().startswith('*node'):
break
headerline = headerline + 1
print(headerline)
headerline2 = 0
for line in input.readlines():
if line.lower().startswith('*element'):
break
headerline2 = headerline2 + 1
print(headerline2)
这两个示例都为第一个标题行打印出正确的值,但是即使我确实在做完全相同的事情,也为下一个标题行提供0。
我在这里永久性地将其设置为零是什么?
解决方法
如果要再次使用readlines(),则应关闭文件。
headerline = 0
for line in input.readlines():
if line.lower().startswith('*node'):
break
headerline = headerline + 1
print(headerline)
input.close()
input=open(...)
headerline2 = 0
for line in input.readlines():
if line.lower().startswith('*element'):
break
headerline2 = headerline2 + 1
print(headerline2)
,
据我所知,它会在读取完成后自动关闭文件
这样运行代码后就可以了:
input = open(.........)
headerline = 0
for line in input.readlines():
if line.lower().startswith('*node'):
break
headerline = headerline + 1
print(headerline)
稍后,当您想再次访问同一文件时,将获得[]
的值。您可以像这样学习价值:
print(input.readlines())#output:[]
返回0,因为您找不到具有该值的任何东西