微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从文件中读取两个连续的行并打印出来

如何解决从文件中读取两个连续的行并打印出来

我有一个文本文件,我只想获取彼此相关的行。尝试使用plt.subplot(2,1,1) plt.plot(dt,pt,'k-') plt.xlabel('time') plt.ylabel('amplitude') Fs = 3000 plt.subplot(2,2) n = len(pt) # length of the signal k = np.arange(n) T = n/Fs frq = k/T # two sides frequency range freq = frq[range(int(n/2))] # one side frequency range Y = np.fft.fft(pt)/n # fft computing and normalization Y = Y[range(int(n/2))] plt.plot(freq,abs(Y),'r-') 函数执行此操作,但没有解决,它抛出了next()。我不确定如何做到这一点,如果有人能指出我正确的方向,我将不胜感激。

以下信息:

stopiteration

解决方法

此代码可确保文件符合预期的格式,即,所有不以“ address-family”开头的行都必须以包含该行的行开头,并且以“ address-family”开头的行最终必须跟随以“ address-family”开头的行。

previous_line = None
with open('out_put.txt','r') as f:
    for line in f:
        if line.startswith('address-family'):
            previous_line = line
        else:
            if not previous_line:
                raise Exception('Unexpected file format')
            print(previous_line,end='')
            print(line,end='')
            previous_line = None
if previous_line is not None:
    raise Exception('Unexpected file format')

打印:

address-family ipv4 vrf vrf2
 neighbor 10.244.120.202 route-map LOCAL_PREF in
address-family ipv4 vrf vrf3
 neighbor 10.249.34.129 route-map LOCAL_PREF in
address-family ipv4 vrf vrf6
 neighbor 10.242.120.202 route-map LOCAL_PREF in
address-family ipv4 vrf vrf9
 neighbor 10.246.88.2 route-map LOCAL_PREF in
,

请尝试以下代码

with open("out_put.txt","r") as f:
    line=f.readline()
    while(line):
        if line.strip().startswith("address-family"):
            line2=f.readline()
            if line2 and line2.strip().startswith("neighbor"):
                print(line,end='')
                print(line2,end='')
            line=line2
        else:
            line=f.readline()
,

我建议使用 .splitlines()函数和索引。如果您可以将文件的行转换为列表,则可以使用loop-if语句获取所需的索引,然后只需找到 that-indice +1并阅读该行即可(下一个连续的行)。

P.S。 -如果您使用的是标准文本文件,则最好将 encoding ='utf-8 添加为 open()函数的第三个参数。这样可以消除令人讨厌的\ n字符,并使计算机更加熟悉实际读取的内容。

,

下一个函数与迭代器一起使用,在这种情况下,文件句柄已经通过readlines()函数读取了所有文件内容,并且没有其他要读取的内容。

您可以按如下方式使用索引来引用下一个连续行

with open('out_put.txt','r') as f:
    lines = f.readlines()
    for i,line in enumerate(lines):
        if line.startswith('address-family'):
            first_line = line.strip()
            print(first_line)
            second_line = lines[i+1].strip()
            print(second_line)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。