python - 逐行读取文件

标签 python

我正在尝试读取一个输入文件并匹配包含“ToolVersionEdit”的行,然后根据“=”拆分并获取第二部分。我正在使用下面的内容。我没有得到所需的输出。我哪里出错了?下面给出了输入和预期输出

输入:

[BuildRequest]
BuildRequestVersion=4.4.21
BuildRequestType=Phone
BuildCommandComboBox=common/build/build.sh tz:A8064AAAAANAAT140029.1 tz_bid=AAAAANAA wcnss:A8064AAAAANAAW120072.1 wcnss_bid=SCAQBAF lpass:A8064AAAAANAZL140106.1 boot_9x15:M9615ACETRMAAB12171.1 boot_9x15_bid=ACEHRMAA rpm:A8064AAAAANAAR1100153.1 rpm_bid=AAAAANAAR modem_9x15:M9615ACEFWTAAM4010223.1 modem_9x15_bid=ACEFWTAA apps_9x15:M9615AFEHRMAA2745.1 apps_9x15_bid=AFEHRMAA rpm_9x15:M9615ACETRMAAR1100159.4 rpm_9x15_bid=AAAAANAAR boot:A8064AAAAANAAB12171.1 boot_bid=AAAAANAA lpass_9x15:M9615ACETRMAZL140105.3 apps:A8064AAAAANLGA2214074.1 dsps:A8064AAAAANAAS150007.1 dsps_bid=DSPSBLD
ToolVersionEdit=1.6.21
CheckSumCheckBox=0
PurposeEdit=
[BuildRequestComments]
LineCount=0

预期输出:-1.6.21

import re
import sys
file = "C:\Dropbox\Reference.brf"

lines = open(file ,'r').readlines()

for line in lines:
    if 'ToolVersionEdit' in line:
        line = line.strip('=')[1]

print line

最佳答案

您的问题是您正在覆盖 line 变量。您使用的变量与您尝试缓存的循环变量相同。此外,一旦找到所需内容,就无需继续循环。

我做的另一项更改是删除对 readlines 的调用。您可以直接从文件对象遍历所有行。此外,(可能)用变量覆盖 file 模块是一种不好的形式,所以我也重命名了它。

import re
import sys
filename = "C:\Dropbox\Reference.brf"
try:
    input_file = open(filename ,'r')
except IOError as exc:
    print exc
else:
    cached_line = ""
    for line in input_file:
        if 'ToolVersionEdit' in line:
            cached_line = line.split('=')[1]
            break

    print cached_line

关于python - 逐行读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13850789/

相关文章:

python - 在 python 属性上重载运算符

python - 如何从另一个 python 文件调用 Qt Thread (QThread)? (QThread被销毁)

python - 如何强制 pip 从 repo 中分支的最后一次提交开始安装?

python - 从 S3 将 CSV 数据加载到 Jupyter Notebook

python - 如何在 django 模板中呈现有序字典?

Python 枚举 : substitute `element` with `element.value`

python - 用 python 画花

python - Tensorflow_core._api.v2.train没有属性 'slice_input_producer'

python - 如何将所有列附加到 Pandas 中的一列中?

python - Keras 数据集的训练集和测试集具有不同的向量长度