python - 为什么 Python pandas read_csv 与其他函数结合使用时不起作用
问题描述
read_csv
当像这样单独编写时,Python pandas会给出正确的输出:
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: No columns to parse from file
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 系统上,这意味着所有写入都附加到末尾无论当前的搜索位置如何,文件的位置)。[...]
如果文件已经存在,则截断该文件。
推荐阅读
- java - @Jacksonized 反序列化不适用于 mixins - “没有字符串参数构造函数/工厂方法从字符串值反序列化”
- java - spring boot 版本更新:测试未运行(maven surefire)
- java - JBPM 7.48/PAM 7.10 下 SQL Server 的对象名称无效
- c# - 在 C# 中按周获取报告组
- java - mvn gwt:在“后台”运行什么?
- c++ - 是否可以使用 typedef 来指定模板类的几种类型?
- kubernetes - 当 Pod 在 OpenShift 中自动缩放时如何接收警报
- r - 如何获取导致“未定义列选择”错误的列名?
- javascript - 如何确定 Material UI 中的 popupState 是否已打开
- pytest - 使用 pytest,我如何断言断言确实发生了?