在Python中,仅在文件中搜索行号一次,然后仅返回0

问题描述

我正在尝试使用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,因为您找不到具有该值的任何东西

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...