Почему Python read_csv не работает в сочетании с другими функциями - PullRequest
0 голосов
/ 18 сентября 2018

Python pandas read_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()  

1 Ответ

0 голосов
/ 18 сентября 2018

Эта строка справа вверху:

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 означает, что все записи добавляются в конец файла независимо от текущей позиции поиска).[...]

усечение файла, если он уже существует .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...