为什么 Python 熊猫与其他函数结合使用时read_csv不起作用



Python pandasread_csv在像这样单独编写时给出正确的输出:

import pandas as pd
def bgp_neighbor_status():
data = pd.read_csv('E:\Python-Scripts\bgp-result.txt', delim_whitespace=True, header=None)
for index, row in data.iterrows():
if row[9] == 'Down' or row[9] == 'Idle' or row[9] == 'Active':
print(f"Neighbor {row[0]} is down")
else:
pass
bgp_neighbor_status()

按预期显示的输出:

Neighbor 10.0.11.101 is down

但是,当我将相同的函数与另一个这样的函数组合时,我会收到错误:-pandas.errors.EmptyDataError:没有可以从文件中解析的列

from __future__ import print_function
from netmiko import ConnectHandler
import pandas as pd
import sys
import time
import select
import paramiko
import re
bgp_result_file = open(r'E:\Python-Scripts\bgp-result.txt','w')
old_stdout = sys.stdout
sys.stdout = bgp_result_file
platform = 'cisco_ios'
username = 'javed'
password = 'cisco'
ip_add_file = open(r'E:\Python-Scripts\IPAddressList.txt', 'r')
def check_bgp(ip_add_file):
for host in ip_add_file:
host = host.rstrip('n')
connect = ConnectHandler(device_type=platform, ip=host, username=username, password=password)
output = connect.send_command('terminal length 0')
output = connect.send_command('enable')
bgp_status = connect.send_command('show ip bgp summary | be N')
print (bgp_status)

def bgp_neighbor_status():
data = pd.read_csv('E:\Python-Scripts\bgp-result.txt', delim_whitespace=True, header=None)
for index, row in data.iterrows():
if row[9] == 'Down' or row[9] == 'Idle' or row[9] == 'Active':
print(f"Neighbor {row[0]} is down")
else:
pass
check_bgp(ip_add_file)
bgp_neighbor_status()  

这行就在顶部:

bgp_result_file = open(r'E:\Python-Scripts\bgp-result.txt','w')

该行在脚本的开头执行,基本上会清除文件。从文档中: https://docs.python.org/2/library/functions.html#open

最常用的模式值是"r"表示读取,"w"表示写入(

如果文件已存在,则截断文件(和"a"表示追加(在某些Unix系统上意味着所有写入都附加到文件的末尾,而不管当前查找位置如何(。[...]

截断文件(如果已存在(。

最新更新