簡體   English   中英

從Excel中的列讀取數據

[英]Reading data from columns in Excel

我正在使用python腳本從Excel文件中的列讀取數據,並使用該數據在Cisco交換機上執行命令。

例如,我有2列以下

Switch        MAC
aaa.com      mac.aaa.000
bbb.com      mac.bbb.000
ccc.com      mac.ccc.000
.....        .....

python現在將切換aaa並將mac mac.aaa.000的端口安全性設置為粘性。

這是命令:

switchport port-security **<mac-address>** sticky

現在我已完成登錄部分,我可以執行命令。 我需要幫助從文件中讀取2列的部分並知道登錄以在相應列上切換a和粘性macaaa。

以下是我在交換機上登錄和執行命令的方法:

term_len = "term len 0"
# Need a loop here that gets switchname from coulmn A and assign it to variable host and also corresponding MAC address and assigns it to variable MAC
host = ""
MAC = ""
session = telnetlib.Telnet(host)
session.write(cred.username + '\n')
session.read_until('Password: ')
session.write(cred.password + '\n')
session.read_until('>')
session.write(cred.en + '\n')
session.read_until('Password: ')
session.write(cred.en_pass + '\n')
session.read_until('#')
session.write(term_len + '\n')
session.write(switchport port-security **MAC** sticky + '\n')

請幫忙。 循環將從文件中讀取所有開關和MAC並執行sticky命令。

我一直在使用openpyxl將excel數據讀入腳本。

    from openpyxl import *
    from tkinter.filedialog import askopenfilename,askdirectory,asksaveasfilename
    #file selector using tkinter
    file = askopenfilename()
    #load the workbook
    wb=load_workbook(file)
    #get sheets
    sheets = wb.sheetnames
    #select sheet to use by index from sheetnames
    ws=wb[sheets[0]]
    #loop through the rows of worksheet and store in list
    switchMAC=[]
    for r in range (ws.max_row):
        row=[]
        for c in range(ws.max_column):
            row.append(ws.cell(row=r+1,column=c+1).value)
        switchMAC.append(row)

從這里開始,您現在可以循環訪問命令列表(switchMAC)

    for r in switchMac:
        host=r[0]
        MAC=r[1]
        #add the rest of your code for each host within the loop

您可以使用xlrd ,此腳本允許您將Excel數據表轉換為字典列表:

import xlrd

workbook = xlrd.open_workbook('foo.xls')
workbook = xlrd.open_workbook('foo.xls', on_demand = True)
worksheet = workbook.sheet_by_index(0)
first_row = [] # The row where we stock the name of the column
for col in range(worksheet.ncols):
    first_row.append( worksheet.cell_value(0,col) )
# transform the workbook to a list of dictionaries
data =[]
for row in range(1, worksheet.nrows):
    elm = {}
    for col in range(worksheet.ncols):
        elm[first_row[col]]=worksheet.cell_value(row,col)
    data.append(elm)
print data

你也可以使用熊貓

from pandas import *
xls = ExcelFile('foo.xls')
df = xls.parse(xls.sheet_names[0])
print df.to_dict()

您可以使用此代碼從excel文件中讀取數據。

import os
import datetime
import sys
import re
import openpyxl
import uuid
from openpyxl import load_workbook

class ExcelDictSmall(dict):
    '''
    Dictionary with all Sheet Names as key, value is a List of Rows each item in a Row List is a List of Cells
    '''
    def __init__(self,dir,fname):
        fullFname = os.path.join(dir,fname)
        wb = load_workbook(filename=fullFname, read_only=True)
        allSheets= wb.get_sheet_names()
        for sheet in allSheets:
            sheetList = []
            rowlist=[]
            for row in wb[sheet].rows:
                for cell in row:
                    rowlist.append(cell.value)
                sheetList.append(rowlist)
                rowlist=[]
            self[sheet]=sheetList

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM